c - 在 C 中,fgets 和 continue 跳过不止一行

标签 c arrays comments skip

我试图跳过所有以“#”开头的行,我当前的代码似乎正在工作,除非它遇到第四个注释,然后它会跳过我需要的第一行坐标。我证明这一点的方法是用两张图片,一张在注释后添加了额外的输入,程序提供了正确的输出,第二张输入正确但输出不正确。(我需要使用没有额外输入的输入线)。 我还附上了我遇到问题的代码部分。非常感谢您的帮助!

enter image description here

正确的输出,错误地将新行添加到txt文件

enter image description here

代码:

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 参数,然后扫描了新行,而不是扫描该行的参数。

关于c - 在 C 中,fgets 和 continue 跳过不止一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46656809/

相关文章:

c - 为什么C语言中string const的地址这么小,总是在同一个地址

c - pthread_create写回的时机

java - java嵌套多行注释

standards - PHP/C/C++ - 您的初始注释 block 在您的程序中看起来如何?

c - GDB单步执行命令

java - 当存在非空连续元素时需要反转数组的逻辑

php - 将二进制数组转换为十进制字符串奇怪的行为

php - 使用数组自动生成更新表单

javascript:/*@ @*/是什么意思?

c - "scatterlist"在 Linux 中如何工作?