我正在學習k & r的c編程書。有此計劃數不字符的輸入如何在EOF發生後讀取任何東西
#include<stdio.h>
main()
{
long nc;
nc=0;
while(getchar()!=EOF)
++nc;
printf("%ld\n",nc);
}
我不知道怎麼來的EOF已發生可以打印NC後。有什麼辦法呢。
我正在學習k & r的c編程書。有此計劃數不字符的輸入如何在EOF發生後讀取任何東西
#include<stdio.h>
main()
{
long nc;
nc=0;
while(getchar()!=EOF)
++nc;
printf("%ld\n",nc);
}
我不知道怎麼來的EOF已發生可以打印NC後。有什麼辦法呢。
文件結束條件僅影響stdin
而不是stdout
。請注意,找到EOF
之後沒有stdin
的用途,只是打印輸出爲stdout
。
我想你會混淆兩個不同的東西。 EOF是關於輸入的。 printf是一個輸出函數。
我完全明白它們都是不同的流輸入和輸出。但事情是當我運行這個程序。它就像一個無限循環,當我按下(ctrl + z即EOF)時,它終止而不打印nc(即運行printf行) – 2011-02-28 11:38:45
getchar()從標準輸入讀取。 printf()寫入標準輸出。它們是通常映射到同一物理設備(控制檯或終端)的不同流。
我完全明白它們都是不同的流輸入和輸出。但事情是當我運行這個程序。它就像一個無限循環,當我按下(ctrl + z即EOF)時,它終止而不打印nc(即運行printf行) – 2011-02-28 11:42:19
你不應該在按Ctrl-Z或任何終止 如果你指望着這點和傳統的* nix炮彈運行,你將暫停你的過程,而不是終止輸入計數(任務控制閱讀起來,在man bash
,例如)
(我知道這個答案來得有點晚,但我看到你一直在您迴應其他答案)
如果你是,你可以使用CTRL-在* nix系統上提按Ctrl-Z D,但不要期望最終在你的輸入流中(它只是用作信號機制).m你也可以用一個文件輸入來測試它,它應該給你比ty更一致的結果平,即
a.out < prog.c
計數在C程序中的線
我完全理解,它們都是不同的流的輸入和輸出。但事情是當我運行這個程序。它就像一個無限循環,當我按(ctrl + z,即EOF)它終止而不打印nc(即運行printf行) – 2011-02-28 11:39:06