【发布时间】:2012-09-21 03:28:09
【问题描述】:
我需要在一个文本文件中整理出一组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++;
}
【问题讨论】:
-
没有足够的信息来提供帮助。不要只是添加更多代码,尝试缩小问题范围并打印有问题的部分。添加 printfs() 以查看您要到达的位置是很好的第一步。
-
@John3136 我在整个代码中添加了 printfs() 并且我发现当有一组以上的 4 行数据并因此冻结时代码不想退出 while 循环.
-
您的示例中没有显示任何内容。哪个while循环有问题:第一个还是第二个? numGames、empLines 和 numTeams 是如何设置的?有一个
break在不知名的地方:这是什么循环? -
我们都知道
for循环可以实现为while循环,您在这里展示的非常精彩。但我可以问为什么吗? -
至于你的问题,你确定空行真的是空的吗?没有其他空格或制表符?换行符真的是
'\n'而不是"\r\n"(UNIX 与 Windows 行结尾)?
标签: c macos terminal while-loop