0

我需要整理出一个文本文件中的一组 4 行数据,例如。

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

我的问题是,如果只有一组 4 行数据,我的下面的函数最终会起作用,但是当有一组以上的数据时它会冻结。什么可能导致了这个问题?如果您需要更多代码,请告诉我。

非常感谢。

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”,那么您将永远循环。i 永远不会增加,您也不会检查 feof() 或查看 fgets() 返回值。

于 2012-09-21T07:05:37.250 回答
0

最有可能的问题在于程序如何解析空行的换行符。'\n' 不必作为文本文件的第一个字符出现,请更改程序首先读取该行的方式。例如,使用 fgetc() 确定它是数据行还是空白行,直到遇到 '\n' 或 '\r'。如果遇到非终止字符,则它是数据行,将指针回绕到行首并读取为格式化字符串。

希望能帮助到你 :)

于 2012-09-21T04:03:51.430 回答