Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 处理和分析文件中的4行数据_C_Macos_Terminal_While Loop - Fatal编程技术网

C 处理和分析文件中的4行数据

C 处理和分析文件中的4行数据,c,macos,terminal,while-loop,C,Macos,Terminal,While Loop,我需要在文本文件中整理一组4行数据,例如 [DATA] [DATA] [DATA] [DATA] [BLANK LINE] [DATA] .... 我的问题是,如果只有一组4行数据,我的lower函数最终会工作,但当有多组数据时,它会冻结。是什么导致了这个问题?请让我知道,如果你需要更多的代码 非常感谢 int i=0; while(i < (numGames + empLines)) { fgets(gameLine, sizeof(gameLine), input2);

我需要在文本文件中整理一组4行数据,例如

[DATA]
[DATA]
[DATA]
[DATA]
[BLANK LINE]
[DATA]
....
我的问题是,如果只有一组4行数据,我的lower函数最终会工作,但当有多组数据时,它会冻结。是什么导致了这个问题?请让我知道,如果你需要更多的代码

非常感谢

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++;
}
inti=0;
而(i<(numGames+雇员))
{
fgets(游戏线,游戏线大小,输入2);
如果(游戏线[0]='\n')
{
继续;
}
sscanf(游戏线,“%s%d%d%s%d%d”、teamName1和teamGoal1和teamBehind1、teamName2和teamGoal2和teamBehind2);
int j=0;
而(j > P>最可能的问题是程序如何解析空白行的新行字符。“\n”不必作为文本文件的第一个字符出现,请更改程序首先读取该行的方式。例如,在遇到“\n”或“\r”之前,使用fgetc()确定它是数据行还是空行。如果遇到非终止字符,则该字符是数据行,将指针倒带到行的开头,并作为格式化字符串读取


希望有帮助:)

根据您的描述,我不知道这是答案,但根据您的代码:

while(i < (numGames + empLines))
{
    fgets(gameLine, sizeof(gameLine), input2);
    if (gameLine[0] == '\n')
    {
        continue;
    }
    i++;
}
while(i<(numGames+雇员))
{
fgets(游戏线,游戏线大小,输入2);
如果(游戏线[0]='\n')
{
继续;
}
i++;
}

如果文件的最后一行只是一个“\n”,那么您将永远循环。我永远不会递增,而且您也不会检查feof()或查看fgets()返回值。

没有足够的信息提供帮助。不要只是添加更多的代码,试着缩小问题范围并打印出问题部分。添加printfs()以查看您的目标是一个很好的第一步。@John3136我在整个代码中添加了printfs(),我发现当有多组4行数据时,代码不希望退出while循环,因此冻结。您的示例中没有显示这些内容。哪个while循环是问题:第一个还是第二个?numGames、empLines和numTeams是如何设置的?在无处有一个<代码>破解>代码:这个循环是什么?我们都知道,<<代码> > <代码>循环可以实现为<代码>,而循环,你在这里展示得很精彩。但是我可以问一下为什么吗?至于你的问题,你确定空行真的是空的吗?没有其他空格或标签?换行符实际上是一个
'\n'
,而不是
“\r\n”
(UNIX与Windows的行结束符)?