EOF发生后如何阅读任何内容

时间:2011-02-27 05:40:53

标签: c

我正在研究k& s的c编程书。河这个程序不计入输入中的字符

#include<stdio.h>
main()
{
long nc;
nc=0;
while(getchar()!=EOF)
     ++nc;
printf("%ld\n",nc);
}

我想知道在EOF发生后如何才能打印出来。有没有办法呢。

4 个答案:

答案 0 :(得分:2)

文件结束条件仅影响stdin,而不影响stdout。请注意,找到stdin后,EOF没有使用,只打印到stdout

答案 1 :(得分:0)

我认为你得到了两个不同的东西。 EOF与输入有关。 printf是一个输出函数。

答案 2 :(得分:0)

getchar()从stdin读取。 printf()写入stdout。它们是通常映射到同一物理设备(控制台或终端)的不同流。

答案 3 :(得分:0)

您不应指望使用Ctrl-Z或任何终止符 如果你指望它并且在传统的* nix shell上运行,你将暂停你的进程而不是终止输入(例如,在man bash中读取JOB CONTROL)

(我知道这个答案有点迟了但我看到你在回答其他答案时一直提到Ctrl-Z)

如果您使用的是* nix系统,则可以使用Ctrl-D,但不要期望它最终会进入您的输入流(它只是用作信号机制).m您也可以使用文件输入来测试它应该给你比打字更一致的结果,即

a.out < prog.c

计算c程序中的行