【发布时间】:2018-04-21 14:33:34
【问题描述】:
我的任务是编写一个程序,该程序将接受键盘输入(不包括空格)并在不使用数组的情况下打印到 .txt 文件。
我尝试使用 while 循环来执行此操作,但遇到了无限循环,然后我开始堆栈溢出,并在另一个问题 EUREKA 中找到了解决方案!
添加:
&& ch != EOF
解决了我的问题。
但是,我不完全理解为什么该解决方案有效,并且希望帮助理解为什么需要第二个条件。
while((ch=getchar()) != '\n' && ch != EOF)
{
putc(ch, fin);
}
fclose(fin);
return 0;
谢谢。
【问题讨论】:
-
如果
getchar到达文件末尾,它将永远不会返回'\n'。所以你需要另一个理由来退出循环。 -
那么getchar是一个包含用户输入的文件吗?
-
不,
getchar()是一个从标准输入读取的函数。 -
我的困惑是不明白 'getchar()' 是从哪里读取的,这有助于我理解。谢谢。
标签: c while-loop eof getchar