2014-10-30 55 views
0

在我今天的課上,我們分配了一個項目,其中涉及使用./a.out「<」文件名命令讀取文件。該文件的內容是這樣的C使用./a.out <文件名以及如何停止讀取來讀取文件

16915 46.25 32 32 
10492 34.05 56 52 
10027 98.53 94 44 
13926 32.94 19 65 
15736 87.67 5 1 
16429 31.00 58 25 
15123 49.93 65 38 
19802 37.89 10 20 
-1 

但更大

我的問題是,以後使用的任何scanf函數完全被忽略,當打印出來,而不是採取在用戶輸入什麼樣子的垃圾只是掃描。在我的實際程序中,這導致需要輸入的菜單出現問題。

如何讓程序停止讀取./a.out「<」文件名命令提供的文件? 我也停在-1搜索,而不是EOF不具有一組額外的陣列數據的緣故開始-1我真正的程序 前

-1 0 0 0 

每班人數爲常數是可調用於計算類平均數,我寧願沒有一組0的數據傾斜。

#include <stdio.h> 

int main(void) 
{ 
     int i = 0,j = 1,d,euid[200],num; 
     int tester = 0; 
     float hw[200],ex1[200],ex2[200]; 
     while(j) 
     { 
       scanf("%d",&tester); 
       if(tester == -1) 
       { 
         j = 0; 
       } 
       else 
       { 
         euid[i] = tester; 
       } 
       scanf("%f",hw+i); 
       scanf("%f",ex1+i); 
       scanf("%f",ex2+i); 
       i++; 
     } 
     for(d = 0;d < 50;d++) /*50 because the actual file size contains much more than example*/ 
     { 
       printf("euid = %d\n",euid[d]); 
       printf("hw = %f\n",hw[d]); 
       printf("ex1 = %f\n",ex1[d]); 
       printf("ex2 = %f\n",ex2[d]); 
     } 
     printf("input something user\n"); 
     scanf("%d",&num); 
     printf("This is what is being printed out -> %d\n",num); 
return 0; 
} 

回答

0

我有完全相同的問題。嘗試了每種可以找到緩衝區中剩餘輸入的方法,但它永遠不會結束。

得到它使用fopen和fscanf工作,但教授。說他更喜歡使用a.out代碼<文件名

+0

不知道我們在同一所學校的機會是什麼?無論如何,我發郵件給我的教授,我不認爲這是可能的使用該命令。當我得到回覆時,我會讓你知道他告訴我什麼。 – Yosvan10 2014-11-02 03:31:34

0

原來這實際上是不可能的。