我已經開始閱讀「The C Programming Language」(K & R),我對getchar()
函數有懷疑。getchar()存儲用戶輸入的位置?
例如這樣的代碼:
#include <stdio.h>
main()
{
int c;
c = getchar();
putchar(c);
printf("\n");
}
鍵入toomanychars
+ CTRL + d(EOF)打印只是t
。我認爲這是預料之中的,因爲它是第一個推出的角色。
但隨後這個其它的代碼:
#include <stdio.h>
main()
{
int c;
while((c = getchar()) != EOF)
putchar(c);
}
鍵入toomanychars
+ CTRL + d(EOF)打印toomanychars
。
我的問題是,爲什麼會發生這種情況,如果我只有一個字符變量?剩餘的字符在哪裏存儲?
編輯:
感謝大家的答案,我開始得到它現在...只有一個陷阱:
第一個程序退出給出CTRL +d而當第二個打印整個字符串,然後等待更多的用戶輸入。爲什麼它會等待另一個字符串,不會像第一個字符串那樣退出?
你的第二種方法只是循環直到EOF。 CTRL + D(在典型的unix系統上)不會導致EOF,除非你自己在一行上。寫完一個字符後按CTRL + D不會導致EOF – nos 2009-06-16 23:19:41