我需要对文本文件中的一组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++;
}发布于 2012-09-21 15:05:37
从你的描述中,我不知道这就是答案,但从你的代码中:
while(i < (numGames + empLines))
{
fgets(gameLine, sizeof(gameLine), input2);
if (gameLine[0] == '\n')
{
continue;
}
i++;
}如果文件的最后一行只有一个'\n',似乎你将永远循环。我永远不会递增,你也不会检查feof()或者fgets()的返回值。
发布于 2012-09-21 12:03:51
最有可能的是,问题出在程序如何解析空行的换行符。“\n”不一定要作为文本文件的第一个字符出现,请先更改程序读取该行的方式。例如,使用fgetc()确定它是数据行还是空行,直到遇到'\n‘或'\r’为止。如果遇到非终止字符,则它是一个数据行,请将指针倒回到该行的开头,并读取格式化字符串。
希望它能有所帮助:)
https://stackoverflow.com/questions/12523841
复制相似问题