我们被要求制作一个小程序,使用getchar()从stdin打印每个字符...我认为以下代码可以工作,但是当我在Windows控制台中运行它时,什么也没发生,光标无限期地挂起,就好像它在等待输入...

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


我以为代码将按字符打印流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 + Enter“ ^ Z-Enter”停止了显示,但是循环继续吗?老实说,我尽我所能理解,但是老实说,这很令人困惑。。在此先感谢您对我的帮助和帮助!

最佳答案

如果要确保在需要时可以打印输出,则应清除输出。
在尝试打印字符之前,应先测试EOF

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

关于c - 按char打印stdin char直到文件结束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41684657/

10-11 22:59
查看更多