2011-11-07 29 views
3

閱讀信息,我想學習如何閱讀C.txt文件,一行行,使每一行的信息可以在迴路等中使用,我沒有一門功課練習這個,但我需要弄清楚爲一個項目編寫一個天文學包的腳本。從文本文件,一行行

所以爲了學習如何做到這一點,我創建了一個名爲list.txt的文件,其編號分別爲1,2,3,4,5,6,7,8,9,並且我希望程序能夠將每行的值。我還創建了一個名爲sum.txt的輸出文件,程序應該對行進行求和,並將總和打印到輸出文件。

我在運行程序時遇到錯誤,但我不確定問題是什麼,因爲我沒有完全理解這一點。我在一本關於C的書中得到了這個程序,並試圖修改它在我的PC上運行它。

我需要能夠做到這一點的原因是因爲我需要從列表中的每一行(每行包含一個字符串)獲取信息。但我想先學會用數字來做。

下面的代碼:

#include<stdio.h> 

int main(void) 
{ 
    int a, sum = 0; 
    FILE *ifp, *ofp; 
    ifp = fopen("list.txt", "r"); 
    ofp = ("sum.txt", "w"); 
    while (fscanf(ifp, "%d", &a) == 1) 
    { 
     sum += a; 
     fprintf(ofp, "The sum is %d. \n", sum); 
     fclose(ifp); 
    } 
    return 0; 
} 
+0

你有什麼錯誤?另外,我注意到你永遠不會關閉'ofp' – Hasturkun

+0

你會得到什麼錯誤? – AShelly

+0

如果出現錯誤,請分享錯誤信息。 –

回答

6

你忘了寫在這裏fopen

ofp = ("sum.txt", "w"); 

此外,你應該移動fclose(也可能是fprintf)從while循環,因爲你只想在讀完所有行後關閉文件。

+0

謝謝我改變了。它仍然無法正常工作。 – none

+0

@LauraBoyle:輸入文件的fopen可能失敗。確保文件list.txt與可執行文件位於同一目錄中。 – codaddict

+0

@codaddict:就是這樣!謝謝!這不是我把它放在錯誤的目錄中,我把它保存爲(list.txt).txt – none

0

您需要關閉輸入文件的循環之後,並移動fprintf外循環也:

} // end of while loop 
fprintf(ofp, "The sum is %d. \n", sum); 
fclose(ifp); 

也不要忘記做錯誤檢查,並確保你已經在你面前打開的文件繼續並在他們身上。