持续输入问题

scanf()函数是有返回值的,成功读入的数据个数其返回值,没有数据被读入,返回0,如果发生错误,则返回EOF。
scanf()函数是读入函数的之一,还有用于数据文件读入的fscanf()等。fscanf()在遇到文件结束符时返回EOF。

char a[3];

while(scanf("%s",a)!=EOF)     它和while(cin>>a)或者while((cin>>a)!=0)是等价的  (这里用scanf恰好体现了半文件式输入的特点)

fun(a);

需要强调的是:

EOF文件结束符是只在文件末尾才有的。之所以在这里给scanf挂EOF,原因是测试时的输入是基于文件输入的。(我们做题目的平台也是如此)这也正是命令行中运行时,需要手动给出ctrl+z的原因(这也恰好是之前那个while(scanf==1)的问题:代码在平台上运行没有问题,自己在本地运行时却始终结束不了,必须手动输入EOF)

。这种输入我们可以把它称之为半文件式的输入(文件末尾会模拟输入EOF),不过这里用的不是文件式的输入,而是cin或者scanf而已。

另外,每次执行循环时,while都会重新输入a,然后执行循环里对a的操作,也就是读完之后操作自己读的内容,之后再读下一次。

如果每次需要操作一个而不是一行,那么就只需把scanf里的参数换成char c即可。(文件的读入和这个也是一样的)

还需要强调的是,要注意和文件中读入挂EOF的相同和区别的理解。文件中挂EOF时,就不是从键盘输入了(叫它全文件型的读入,哈哈)

这篇文章,是又一个故事的结束...
lazy's story is continuing.
原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/13656405.html