0

したがって、このコードを実行している間、エラーが発生し続けます。

"/Applications/TextMate.app/Contents/SharedSupport/Bundles/C.tmbundle/Support/bin/bootstrap.sh:7行目:11441バスエラー:10" $ 3 ".out"

以前の投稿を調べましたが、理解できませんでした。なぜこれが発生するのか、誰かが知っていますか。配列がメモリに対して大きすぎるためだという投稿を見たことがありますが、2つの20spaceint配列がそれほど大きいとは想像できません。

#include <stdio.h>

int read_file(int *x, int *y);

int main()
{
    int count, x[25], y[25];
    count = read_file(x,y);
    return 0;
}

int read_file(int *x, int *y)
{
    int number, i;
    FILE *fp;
    fp = fopen("data.txt", "r");
    printf("File open");
    for(i = 0 ; fscanf(fp, "%d", &number) != 0; i++)
    {
            x[i] = number;
    }
    for(i = 0 ; fscanf(fp, "%d", &number) != 0; i++)
    {
        y[i] = number;
    }
        fclose(fp);
        return (i-1);
}

data.txtは次のようになります。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0

4

3 に答える 3

2

入力が悪い場合、fscanfはEOF(-1?)を返すことができます-それが問題ではないと仮定しましょう。xがすべての数字を読み取るのを止めるのは何ですか?number==0のときにループを停止するつもりのようです。

于 2012-07-17T05:13:40.813 に答える
0

print()を挿入して(またはデバッガーで実行して)、「for()」ループが実際に終了していると思う場所で終了しているかどうかを確認します:)

次のことを確認するには、コードを変更する必要があります。

  1. 「fopen()」のエラー

  2. 「fscanf()」のエラー

于 2012-07-17T05:10:35.083 に答える
-2

fscanfnumber == 0正常に読み取られたアイテムの数を返します。ループから抜けるかどうかをテストしたいと思います。

于 2012-07-17T05:12:21.080 に答える