2013-01-22 125 views
2

我試圖重定向一個文件作爲stdin輸入(其中一個要求)。我無法弄清楚如何檢查下一個輸入是否爲空或者是否完成。如何檢查下一個輸入是否爲空?

像這樣

./a.out program < file.txt 

所以這是我想要做的事。

char string[10]; 

while (the input is NOT empty) 
{ 
    scanf("%s",&string); 
    printf("%s",string); 
} 

給定的文件看起來像這樣

abc 
abcd 
abcde 
abcdef 

回答

2

如果你做到以下幾點,就只有當scanf不能讀別的停止。

while(scanf("%s", string) != EOF){ 
    printf("%s", string); 

} 

順便說掃描一個字符串,我們不能利用&因爲它已經是一個指針。

+0

我編碼方式類似於這一點。 scanf的手冊頁通知:「如果在任何轉換(例如文件結尾- 發生)之前發生輸入故障,則EOF值爲 。」 – Heartinpiece

+0

非常感謝,這個伎倆。自從我的學校爲了考試而封鎖它,並且尚未解除封鎖之後,我無法訪問我的終端上的手冊頁。 – blaz1nthunder

2

你可以叫feofstdin

while (!feof(stdin)) { 
    scanf("%s", string); // You do not need & for strings 
    printf("%s",string); 
} 
+0

非常感謝,我嘗試了上面這一個。他們兩人都工作。 – blaz1nthunder

+0

@ user1993422不客氣!如果您的問題得到解決,請考慮接受其中一種解決方案,以表明您並未主動尋找改進的解決方案,並在堆棧溢出時獲得新徽章。 – dasblinkenlight