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