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