下面是我使用PellesC运行的一小段代码。
执行代码后,我在控制台中键入了几个字符,然后按enter键。
你能给我解释一下为什么printf("%ld\n", nc);
行看起来没有被执行吗?因为没有输出写入控制台。
#include <stdio.h>
int main(void)
{
long nc = 0;
while(getchar() != EOF)
{
++nc;
}
printf("%ld\n", nc);
}
我决定用K&R这本书彻底地学习C语言,我很尴尬地说,这个相当初级的例子把我难倒了。
发布于 2009-11-25 07:19:34
你是如何结束你的输入的,你使用的是什么系统?
如果你正在按一个“中断”或“终止”组合键,那么你很可能在你的进程打印之前就杀死了它。
如果您在unix上使用Ctrl-D或在windows上使用Ctrl-Z作为行首,那么这将发出“输入结束”的信号,而不会终止进程。
您还可以尝试从测试文件重定向输入。例如:
myprogram <input.txt
发布于 2009-11-25 07:23:37
在Windows上,CTRL-Z或F6都会发出文件结束的信号。
发布于 2009-11-25 07:19:46
“按enter键”?代码中的循环将继续迭代,直到到达文件结尾标记。“按enter”将不会导致EOF。如果要从键盘模拟EOF,请参阅终端的文档。例如,在Windows中,你必须点击Ctrl+Z才能生成EOF。
https://stackoverflow.com/questions/1793616
复制相似问题