码迷,mamicode.com
首页 > 其他好文 > 详细

~scanf()简析

时间:2014-12-18 17:04:00      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:scanf   eof   

九度做题的时候遇到好多循环输入,while(~scanf("%d",&n))简析


#include <stdio.h>

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		printf("%d\n",n);
	}
	return 0;
}

bubuko.com,布布扣

EOF

在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。

C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。

while(~scanf("%d",&n))

<=>  while(scanf("%d",&n)!=EOF)


1.正常输入的时候,scanf返回输入的数字如1,2,3等等,对这些数字取非,不会成为0,就会执行循环;


2.错误输入指的就是没有输入的时候,scanf返回的是EOF(End Of File),EOF=-1,对EOF取非,就是对-1取非

[~是位运算,它是将数据在内存中的每一位(当然是二进制)取反。-1在内存中所有位全部为1,~(-1)=0,即对-1取非就是0]

就会跳出循环。


~scanf()简析

标签:scanf   eof   

原文地址:http://blog.csdn.net/wtyvhreal/article/details/42006055

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!