通过char打印stdin char直到文件结束

时间:2017-01-16 20:41:07

标签: c eof

我们被要求创建一个小程序,使用getchar()从stdin打印每个char ...我认为以下代码可以工作但是当我在Windows控制台中运行时没有任何反应,光标无限期地挂起,好像它是等待输入...

int c = 0;
while(c != EOF)
{
    c = getchar();
    printf("%c\n", c);
}
printf("\nOut of loop!\n");

我认为代码会用char打印流char,如果stdin中没有任何内容,getchar()将返回EOF并且循环将停止..我想我误解了有关如何在C中完成输入的内容,对于初学者来说,这真的很令人困惑......任何帮助!


另一个令人困惑的例子:

char str[100]={0};
printf("Entrer a string: ");
scanf("%s",str); //i'll enter a string with spaces to have something to print in the loop
//let's say i enter Hello Wor^Zld!
int c = 0;
while(c!=EOF)
{
    c = getchar();
    printf("%c",c);
}
printf("Finally done with loop!!\n");


当我运行上面的代码时,我在控制台中得到以下显示:
Wor->
用同样的旧光标悬挂等待输入......任何想法为什么会这样?似乎Ctrl-Z +输入“^ Z-Enter”停止显示但循环继续?我老老实实地要明白了,但说实话,这让人感到困惑。感谢您提前帮助和支持我!

1 个答案:

答案 0 :(得分:0)

如果你想确定它可以在你想要的时候打印,你应该输出你的输出。 在尝试打印角色之前,您应该先测试EOF

int c;
while((c = getchar()) != EOF)
{
    printf("%c\n", (char)c);
    fflush(stdout);
}
printf("Out of loop!\n");