2014-09-25 111 views
1

我的程序正在使用while scanf!= EOF從.in文件輸入標準輸入。如./"file「< file.in問題是,我必須在終端scanf從終端。有沒有一種方法可以將EOF調用到stdin,以便文件停止從file.in中掃描,或者可以指定scanf從終端讀取而不是文件。因爲這是一項大學任務,所以我也被允許使用scanf。這是我的問題的模擬程序。由於如何調用EOF到標準輸入

int main() { 
int arr[100]; 
int num; 
int count = 0; 
while(scanf("%d", &arr[count]) != EOF) { 
    count++; 
} 
printf("%d\n", arr[0]); 
scanf("%d", &num); 
printf("%d\n", num); 
} 

**輸出爲數字的第一個列表的只是數量,和scanf完全與打印張數沒有價值被忽略。

+4

https://en.wikipedia.org/wiki/End-of-file linux中的ctrl-d,windows中的ctrl-z – clcto 2014-09-25 16:04:14

+0

你的'while'不符合你的期望。 – edmz 2014-09-25 16:05:08

+0

對不起,我只是一個命令ctrl-d的printf?對不起,我是新手c – Sarc 2014-09-25 16:12:28

回答

0

scanf()返回讀取的字符數。 你需要FEOF()函數,或0

+0

你能解釋更多嗎? – cpburnz 2014-09-25 16:51:55

+0

如果FILE *爲EOF,則函數feof(FILE *)返回非零值。 將您的scanf()更改爲feof(),在循環體中添加您的scanf調用。 – 2014-09-25 18:50:25

+0

可能需要將scanf()替換爲fscanf() – 2014-09-25 18:56:55

0

從scanf函數返回比較值要調用/在stdin模擬EOF,按CTRL + Z,如果你在窗口。否則在運行程序時按CTRL + D。

+0

抱歉,但我認爲我的問題被扭曲了。 While循環會結束文件「file.in」,但第二個scanf仍然不會從提示中進行掃描 – Sarc 2014-09-25 16:38:32

+0

嘗試使用'fclose'在'scanf'之前關閉文件 – 2014-09-25 16:54:57

+0

它仍然不會提示輸入 – Sarc 2014-09-25 17:04:13

相關問題