1

ファイルから一連の 8 つの整数を配列に読み込んで、それらの整数を表示しようとしています。3 回目もセグメンテーション違反が発生し続け、何が間違っているのかよくわかりません。

struct aStruct {
    int a;
    int b;
    ...
};

typedef struct aStruct myStruct; 

while(fgets(line, MAX_LENGTH, file) != NULL) {
    int myArray[8] = {0};
    char* val = strtok (line," ,\n\t\r");
    while (val != NULL)
    {
        myArray[i] = atoi(val);
        i++;
        val = strtok (NULL, " ,\n\t\r");
    }

    myStruct foo;

    foo.a = myArray[0];
    foo.b = myArray[1];
            ...
}

入力ファイルは次のように構成されています。

0, 0, 1, 5, 0, 0, 0, 0
1, 0, 2, 5, 0, 0, 0, 0
2, 0, 3, 5, 0, 0, 0, 0
3, 0, 4, 5, 0, 0, 0, 0
4, 0, 5, 5, 0, 0, 0, 0

以下でテストした場合:

printf("myArray[0]: %d ", myArray[0]);

奇妙な出力が得られます0 0

私はそれがあるべきだと信じています0 1。何かを正しく初期化していませんか、それともnew構造体の構文が正しくありませんか? いくつかの異なる組み合わせを試しましたが、よくわかりません。

4

1 に答える 1

4

ここでの問題は、初期化されていない変数またはリセットされていない変数にあると思いますi。while ループ内に追加するi = 0と役立つ場合があります。

while(fgets(line, MAX_LENGTH, file) != NULL) {
    i = 0; // <<< reseting array index
    int myArray[8] = {0};
    char* val = strtok (line," ,\n\t\r");
    while (val != NULL)
    {
        //...
        i++;
    }
}
于 2013-11-13T23:18:38.640 に答える