2011-11-07 46 views
3

.txtのファイルをCに1行ずつ読み込む方法を学びたいので、各行の情報をループなどで使用できるようにします。私は宿題を練習しませんこれは天文パッケージ用のスクリプトを書くプロジェクトのためには分かります。テキストファイルからの情報の読み込み

これを行う方法を学ぶために、私はlist.txtというファイルを1,2,3,4,5,6,7,8,9の番号を別々の行に作りました。プログラムを合計したい各行の値。私もsum.txtという出力ファイルを作成し、プログラムは行を合計し、その合計を出力ファイルに出力することになっています。

私はプログラムを実行するとエラーが発生します。私はこれを完全に理解していないため、問題が何であるか分かりません。私はCの本でこのプログラムを手に入れ、それを自分のPC上で実行するように修正しようとしました。

私がこれを行うことができる必要がある理由は、リストの各行(各行に1つの文字列を含む)から情報を取得する必要があるためです。しかし、私は最初に数字でそれをすることを学びたい。ここで

は、コードは次のとおりです。

#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"); 

また、あなたがするので、whileループの外にfclose(そしておそらくfprintf)を移動する必要がありますすべての行を読み込んだ後にファイルを閉じたいだけです。

+0

ありがとう私はそれを変更しました。それでもまだ動作しません。 – none

+0

@LauraBoyle:入力ファイルにあなたのファイルが存在しない可能性があります。 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); 

はまた、エラーチェックを行うと、あなたがあなたの前にファイルを開いたことを確認することを忘れないでくださいそれらのIOに行きます。

関連する問題