关于c语言中EOF用法的理解
2013-04-05 12:46
337 查看
作者:[b]Senlern[/b]
转载请注明,原文链接:/article/10317932.html
首先看一下EOF的官方解释:
计算机术语,缩写通常为EOF(End Of File),在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。在C语言中,或更精确地说成C标准函式库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。
#include<stdio.h> #include <stdlib.h> int main(void) { int a,b; while(scanf("%d %d",&a,&b) != EOF) { printf("%d\n",a+b); } return 0; }
在上面这段代码中,定义了两个整型的变量,通过在while循环中判断输入的返回值是否为EOF(即-1)然后打印a+b的值。
之前我也只是听说过EOF这个名词,但是具体怎么用也不知道,经过我的测试发现:
1.
输入1 2然后回车打印出3,这个好理解,scanf接收到两个整型数据然后回车(这时候scanf的返回值是2,scanf()函数执行成功时的返回值是成功读取的变量数,也就是说,你这个scanf()函数有几个变量,如果scanf()函数全部正常读取,它就返回几。)
2.
输入1然后回车,它会让你继续输入,在这期间不论你空格键,回车键,TAB键只要是你没输入一个非空白符它就会让你无限输入。(空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,enter等,直到第一个非空白符出现为止。scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。①
遇空格、“回车”、“跳格”键。②遇非法输入。
3.
输入1 2 3 4 5 6 7 8,然后回车,它会打印出3 7 11 15,这个我自己理解是当你按下回车时scanf结束,但是接收的数据有4组,它会先取出两个然后打印之和,然后依次。。。。打印(理解不对之处还望各位赐教。)4.
输入,. ~等字符回车,会进入无限循环屏幕上打印无限的数字,这是因为输入一个字符串时,由于scanf需要一个整型数据,可是当前输入缓冲中的数据并不是一个整型的数据,那么scanf会直接退出,并返回0,表示读到0个数,同时不会改为输入缓冲,会进入到下一轮的循环之中,在屏幕输出:上一次的计算结果,这时由于输入缓冲中还有数据,scanf不会阻塞,而是直接返回,可是发现缓冲中的数据不是所要的数据,这样返回0.....使得循环一直运行下去。要是想解决问题可以在循环语句中加上这句话:fflush(stdin);这样就不会无限打印数字了。
至于想让循环结束,在windows下输入ctrl+Z(即EOF)然后回车就可以了。好了,我得研究结束了,写出来大家共同理解,希望文中有错误的地方大家可以指点一二。
相关文章推荐
- C语言学习10:结构体,结构体应用,联合用法,枚举,fopen函数使用,fseek,ftell的作用和文件结束符EOF,数组和文件交换数据,个人信息管理。
- C语言学习笔记——关于 .obj 文件的理解
- 关于c语言不同类型变量存放位置的个人理解
- 关于C的关键字——const的理解和用法小总结
- 关于C语言基本元素的相关问题自己的理解
- 关于C语言中volatile关键字的理解
- 关于键盘输入、缓冲输入、读入字符、解析C语言编程对缓冲区的理解
- callee,caller,call()以及apply()的用法理解以及从中引申出的关于作用域跟this的理解
- 关于C的关键字——const的理解和用法
- C语言中关于scanf函数的用法
- C语言文件结尾标志EOF用法
- 深入理解C/C++混合编程(关于#ifdef __cplusplus extern "C" {...}的用法)
- 关于C语言中的malloc和free函数的用法(转载)
- callee,caller,call()以及apply()的用法理解以及从中引申出的关于作用域跟this的理解
- 关于C语言指针的用法
- Javasript 关于self(that) = this用法的理解
- 关于include的正确理解和用法
- 关于C语言指针的一些理解(一)
- C语言中关于float、double、long double精度及数值范围理解
- 关于C语言中常量指针和指针常量的一点理解