在 C 语言中,fgets 和 continue 跳过了不止一行
In C fgets and continue are skipping more than one line
我试图跳过所有以“#”开头的行我当前的代码似乎可以正常工作,除非它遇到第四条评论,然后它会跳过我需要的第一行坐标。我证明这一点的方法是用两张图片,一张在评论后添加了额外的输入,程序提供了正确的输出,第二张输入正确但输出不正确。(我需要使用没有额外输入的输入线)。
我还附上了遇到问题的代码部分。非常感谢您的帮助!
正确的输出,错误地向 txt 文件添加了新行
代码:
a = 0 ;
while(fgets(line, sizeof(line),fp) != NULL)
{
if (line[0] == '#')
{
continue;
}
else if (MAX_X==0 && MAX_Y==0 )
{
if ((sscanf(line,"%d %d", &MAX_X, &MAX_Y)==2) && MAX_X>0 && MAX_X <= 1000 && MAX_Y>0 && MAX_Y<=1000){
continue;
}
}else if (NUM_PT==0)
{
if ((sscanf(line, "%d", &NUM_PT)==1)&& NUM_PT>0 && NUM_PT<=1000)
continue;
}
else if((fscanf(fp,"%d %d", &X_COORD[a], &Y_COORD[a]))&& X_COORD[a]>=0 && X_COORD[a]<=MAX_X && Y_COORD[a]>=0 && Y_COORD[a]<= MAX_Y)
{
a++;
continue;
}
else if(strcmp(line, "")==0)
{
return -1;
}
}
你的行有误
else if((fscanf(fp,"%d %d", &X_COORD[a], &Y_COORD[a]))&& X_COORD[a]>=0 && X_COORD[a]<=MAX_X && Y_COORD[a]>=0 && Y_COORD[a]<= MAX_Y)
{
a++;
continue;
}
您刚刚扫描了 LINE 参数,然后扫描了一个新行而不是从该行开始扫描参数。
我试图跳过所有以“#”开头的行我当前的代码似乎可以正常工作,除非它遇到第四条评论,然后它会跳过我需要的第一行坐标。我证明这一点的方法是用两张图片,一张在评论后添加了额外的输入,程序提供了正确的输出,第二张输入正确但输出不正确。(我需要使用没有额外输入的输入线)。 我还附上了遇到问题的代码部分。非常感谢您的帮助!
正确的输出,错误地向 txt 文件添加了新行
代码:
a = 0 ;
while(fgets(line, sizeof(line),fp) != NULL)
{
if (line[0] == '#')
{
continue;
}
else if (MAX_X==0 && MAX_Y==0 )
{
if ((sscanf(line,"%d %d", &MAX_X, &MAX_Y)==2) && MAX_X>0 && MAX_X <= 1000 && MAX_Y>0 && MAX_Y<=1000){
continue;
}
}else if (NUM_PT==0)
{
if ((sscanf(line, "%d", &NUM_PT)==1)&& NUM_PT>0 && NUM_PT<=1000)
continue;
}
else if((fscanf(fp,"%d %d", &X_COORD[a], &Y_COORD[a]))&& X_COORD[a]>=0 && X_COORD[a]<=MAX_X && Y_COORD[a]>=0 && Y_COORD[a]<= MAX_Y)
{
a++;
continue;
}
else if(strcmp(line, "")==0)
{
return -1;
}
}
你的行有误
else if((fscanf(fp,"%d %d", &X_COORD[a], &Y_COORD[a]))&& X_COORD[a]>=0 && X_COORD[a]<=MAX_X && Y_COORD[a]>=0 && Y_COORD[a]<= MAX_Y)
{
a++;
continue;
}
您刚刚扫描了 LINE 参数,然后扫描了一个新行而不是从该行开始扫描参数。