C 为什么在使用printf()时不会产生任何输出?
我现在正在经历K&R C,我正在尝试一个例子,程序将字符流作为输入,然后打印出流中的字符数 就我所见,这似乎没有产生任何输出:C 为什么在使用printf()时不会产生任何输出?,c,C,我现在正在经历K&R C,我正在尝试一个例子,程序将字符流作为输入,然后打印出流中的字符数 就我所见,这似乎没有产生任何输出: main() { long nc; nc = 0; while (getchar() != EOF){ ++nc; } printf("%1d\n", nc); } 然而,这似乎很好,尽管与我想要的略有不同: main() { long nc; nc = 0; while (getcha
main()
{
long nc;
nc = 0;
while (getchar() != EOF){
++nc;
}
printf("%1d\n", nc);
}
然而,这似乎很好,尽管与我想要的略有不同:
main()
{
long nc;
nc = 0;
while (getchar() != EOF){
++nc;
printf("%1d\n", nc);
}
}
任何指点都将不胜感激。提前谢谢
编辑
我曾尝试使用ctrlz模拟EOF,但似乎不起作用。我在Windows7上运行这个命令行,如果这有什么不同的话。
您的程序运行良好 您没有看到输出,因为您从未发送
EOF
。如果在命令行上运行,请传入文件:
./a.out <myfile.txt
下面是一个使用GnuCC的示例会话
您的程序运行良好 您没有看到输出,因为您从未发送
EOF
。如果在命令行上运行,请传入文件:
./a.out <myfile.txt
下面是一个使用GnuCC的示例会话
对于
getchar
要返回EOF
,您需要“关闭流/到达流的末尾”。见对该问题的回答:
简言之:
您需要将EOF发送到流(例如,在Windows上发送Ctrl+Z或在Linux上发送Ctrl+D)。
或例如使用管道。例如,将一个文件的内容导入应用程序。当第一个应用程序终止时,它会自动关闭流,以便您的应用程序将读取EOF
e、 g.在Linux下:
$ cat some_file.txt | ./a.out
希望这有帮助。对于
getchar
要返回EOF
您需要“关闭流/到达流的末尾”。见对该问题的回答:
简言之:
您需要将EOF发送到流(例如,在Windows上发送Ctrl+Z或在Linux上发送Ctrl+D)。
或例如使用管道。例如,将一个文件的内容导入应用程序。当第一个应用程序终止时,它会自动关闭流,以便您的应用程序将读取EOF
e、 g.在Linux下:
$ cat some_file.txt | ./a.out
希望这有帮助。如何关闭输入流?添加getch();在printfi之后,
printf
在循环中工作,而不是在循环中工作,那么它永远不会接收到EOF
。调试器说什么?%1d\n
-->%ld\n
如何关闭输入流?Add getch();在printfi之后,printf
在中工作,而循环中没有工作,那么它永远不会收到EOF
。调试器说什么?%1d\n
-->%ld\n