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

对getchar()更上一层楼的疑惑

2012-08-13 
对getchar()进一步的疑惑编译环境为:MinGW,系统环境:winXPC/C++ codeint cwhile ( 1 ){if ( ( c getcha

对getchar()进一步的疑惑


编译环境为:MinGW,

系统环境:winXP 



C/C++ code
        int c;        while ( 1 )        {            if ( ( c = getchar() ) != EOF )            {                break;            }            putchar( c );        }


结果:输入“selir”紧接着“Ctrl + z”会直接退出循环。



疑问:

getchar(),
根据了解,它的作用是从stdin流中读入一个字符,也就是,如果stdin有数据的话不用输入它就可以直接读取了,第一次getchar()时,确实需要人工的输入,但是如果你输入了多个字符,以后的getchar()再执行时就会直接从缓冲区中读取了。

为什么代码结果会是输入任意字符“selir”紧接着“Ctrl + z”,会直接退出,
而不会把前面所输入的数据打印出来再退出循环?



[解决办法]
因为你没有按回车,c实际上没有接受到任何字符,所以输出是空。cin也一样,不按回车是不会进入到流里。
[解决办法]
你的逻辑有误,应该是if((c = getchar()) == EOF)才break出循环,而且误写为!=了。
[解决办法]
上面错误已经给你改正,我只好混分了!
[解决办法]
貌似问题解决了。
[解决办法]
唉,晚了一步,混个分

热点排行