首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

getchar()读取输入,直到遇到EOF,停止输入。解决方法

2012-05-09 
getchar()读取输入,直到遇到EOF,停止输入。while((c getchar()) ! EOF)//这是我对EOF做出的判断。。程序运

getchar()读取输入,直到遇到EOF,停止输入。
while((c = getchar()) != EOF) //这是我对EOF做出的判断。。

程序运行时我输入
love China123146546fffff ctrl+z 然后回车。。
这样子就应该停止读取输入了,但程序还是没停止。我得再按下 ctrl+z,回车。程序才停止读取输入。
为什么是这样子呢?不是应该在第一次按下ctrl+z一程序就停止输入了吗?

[解决办法]
逻辑上理解:在键盘输入和你的getchar()读字符之间有个OS的代码从键盘向输入缓冲区(stdin)传送的过程,仅当你回车后,它才能完成,控制权才传给你的getchar()函数

[解决办法]
编译器的问题吧,以前我也做过用EOF的习题都是按while((c = getchar()) != EOF) 没有出现过楼主说的问题啊
[解决办法]
请楼上各位大虾们改天抽个时间去阅读下C语言标准。

C标准上对一些读入函数都有这个说明:只有当读完字符流的有效字符后再向后继续读取的时候才返回EOF。

也就是说大家误解了EOF!

不明白的请回问。。。。
[解决办法]
让我们看看C PRIMER + 里面的一句话:

许多微型计算机系统将一行的开始位置键入的CTRL+Z识别为文件尾信号,还有一些则把任意位置的CTRL+Z解释为文件尾信号。


楼主的输入:love China123146546fffff ctrl+z 然后回车。。

说明问题了吧!
[解决办法]

探讨
让我们看看C PRIMER + 里面的一句话:

许多微型计算机系统将一行的开始位置键入的CTRL+Z识别为文件尾信号,还有一些则把任意位置的CTRL+Z解释为文件尾信号。


楼主的输入:love China123146546fffff ctrl+z 然后回车。。

说明问题了吧!

热点排行