0

初めてCを学ぶ学生です。教授がクラスに与えた例を入力しました。これは、「input.txt」というファイルからいくつかの整数を読み取ることになっています。

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

#include <stdio.h>

int main() {
    FILE *ifp;
    int num = -1, sum = 0;

    ifp = fopen("input.txt", "r");
    while (num!= 0) {
        fscanf(ifp, "%d", &num);
        sum +=num;
    }
    fclose(ifp);
    printf("The sum is %d.\n", sum);
    return 0;
}

このプログラムに「合計」を出力させようとしていますが、実行してもエラーはありませんが、出力は (11db) だけです。

「input.txt」というファイルを作成してデスクトップに保存したのですが、うまくいきません。

ファイル「input.txt」には次が含まれます。

1 2 3 4 5

どういうわけか、どこかでファイルパスを定義する必要があるのか​​ 、それともどこで/どのようにこれを行うのかわかりません。

どんな助けでも大歓迎です。

ありがとう!

4

1 に答える 1

1

私の推測では、エラーはファイルを開くことができないためです。fopen が非 NULL を返すことを確認する必要があります。ファイルを開く操作は、失敗することがよくあります。例えば:

ifp = fopen("input.txt", "r");
if (ifp == NULL) {
    fprintf(stderr, "Couldn't open the file for reading.\n");
}

「/」で始まるフル パス名を指定しない限り、fopen はプロセスの現在の作業ディレクトリでファイルを開きます。これはおそらくデスクトップではありません。

また、ファイルの終わりに到達すると、fscanf は値 EOF を返します。変数numはゼロに設定されません。これは、整数のファイルを読み取る方法です。

while (fscanf(ifp, "%d", &num) == 1) {
    sum += num;
}
于 2013-02-21T18:03:51.413 に答える