学了一年c发现才发现的有关问题
学了一年c发现才发现的问题C/C++ code#include stdio.hvoid main(){int cwhile ((c getchar()) ! EO
学了一年c发现才发现的问题
C/C++ code#include <stdio.h>void main(){ int c; while ((c = getchar()) != EOF) putchar( c );}
我不明白为什么我输入jflksdjf在加crtl+z后循环不退出!必需换行后在ctrl+z才有用!
但是如果用别的字符就可以,如'a'。输入hfdfjaf遇到a就会跳出循环。这是为什么了?
[解决办法]>>我不明白为什么我输入jflksdjf在加crtl+z后循环不退出!
这是因为getchar在对stdin不刷新的前提下,只会提示一次输入
如当程序运行后输入“jflksdjf”+“^z”,再键入回车,程序会显示
“jflksdjf->”,这里字符“->”就是“^z”,当检索到c=10(回车时)
再提示输入
此时再键入“^z”就直接跳出循环了
这个问题和编译器无关,只不过是getchar输出的一个特点!