读书人

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

发布时间: 2012-08-13 13:21:53 作者: rapoo

对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出循环,而且误写为!=了。
[解决办法]
上面错误已经给你改正,我只好混分了!
[解决办法]
貌似问题解决了。
[解决办法]
唉,晚了一步,混个分

读书人网 >C语言

热点推荐