我正在研究k& s的c编程书。河这个程序不计入输入中的字符
#include<stdio.h>
main()
{
long nc;
nc=0;
while(getchar()!=EOF)
++nc;
printf("%ld\n",nc);
}
我想知道在EOF发生后如何才能打印出来。有没有办法呢。
答案 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程序中的行