0

テキストファイル内の4行のデータセットを整理する必要があります.

[DATA]
[DATA]
[DATA]
[DATA]
[BLANK LINE]
[DATA]
....

私の問題は、4 行のデータのセットが 1 つしかない場合は以下の関数が機能することですが、複数のセットがある場合はフリーズします。問題の原因は何ですか? さらにコードが必要な場合はお知らせください。

どうもありがとう。

int i=0;
while(i < (numGames + empLines))
{
    fgets(gameLine, sizeof(gameLine), input2);
    if (gameLine[0] == '\n')
    {
        continue;
    }
    sscanf(gameLine, "%s %d %d %s %d %d", teamName1, &teamGoal1, &teamBehind1, teamName2, &teamGoal2, &teamBehind2);
    int j =0;
    while (j < numTeams)
    {



                                          ...



                 }
                k++;
            }
            break;
        }
        j++;
    }
    i++;
}
4

2 に答える 2

1

あなたの説明から、これが答えであることはわかりませんが、あなたのコードから:

while(i < (numGames + empLines))
{
    fgets(gameLine, sizeof(gameLine), input2);
    if (gameLine[0] == '\n')
    {
        continue;
    }
    i++;
}

ファイルの最後の行が単に '\n' である場合、永久にループするように見えます。私はインクリメントされることはなく、feof() をチェックしていないか、fgets() の戻り値を見ていません。

于 2012-09-21T07:05:37.250 に答える
0

ほとんどの場合、プログラムが空白行の改行文字を解析する方法に問題があります。'\n' がテキスト ファイルの最初の文字である必要はありません。プログラムが最初に行を読み取る方法を変更してください。たとえば、'\n' または '\r' が検出されるまで fgetc() を使用して、データ行か空白行かを判断します。非終了文字が検出された場合、それはデータ行であり、ポインターを行の先頭に巻き戻し、フォーマットされた文字列として読み取ります。

それが役に立てば幸い :)

于 2012-09-21T04:03:51.430 に答える