从 C 中的文本文件中读取前 N 行

Reading first N lines from a text file in C

我正在尝试解析文件中的一些结果并在 C 程序中读取它的前两行。这是我正在做的事情:

int i=0;
while (fgets(line_string, line_size, fp) != NULL){
    if (i==0){
        some_variable = ((int) atoi(line_string));
        i++;
    }
    if (i==1){
        some_other_variable = ((int) atoi(line_string));
        i++;
    }
    else{
        break;
    }
}

但问题是 line_string 一直指向文件的第一行并且在 while 循环中没有进展。我做错了什么?

else分支将在i==0时执行,因为那时i==1为false。

您可能想再添加一个 else

int i=0;
while (fgets(line_string, line_size, fp) != NULL){
    if (i==0){
        some_variable = ((int) atoi(line_string));
        i++;
    }
    else if (i==1){ /* add "else" here */
        some_other_variable = ((int) atoi(line_string));
        i++;
    }
    else{
        break;
    }
}

if (i==0){
    some_variable = ((int) atoi(line_string));
    i++;
}
if (i==1){

您将在第一轮中输入 两个 if。您需要一个 else 来告诉编译器不要输入第二个 if,当 i 从 0 变为 1 时:

if (i==0){
    some_variable = ((int) atoi(line_string));
    i++;
}
else if (i==1){