所以我想从csv文件中读取一些数据。

但是fgets在while循环中一直给我NULL。在while循环外,它工作正常。

也许我在这里缺少明显的东西。

编辑:我只是清理代码

int main(int argc, char *argv[])
{

FILE *input_file = fopen("free-zipcode-database-Primary.csv","r");
char buffer[1024];

if (input_file == 0) {
    fprintf(stderr,"Cannot open input file.\n");
}



int count = 0; // to skip the first line in csv that contains the titles


while (1)
{


    if (count == 0)
    {
        continue;
    }

    if (fgets(buffer, 1024, input_file) != NULL)
    {
        puts(buffer);
        parseDataFromCSV(buffer);
    } else {
        break;
    }




    count++;

}


    fclose(input_file);

    return 0;
}


编辑:这是工作代码。

FILE *input_file = fopen("free-zipcode-database-Primary.csv","r");
char buffer[1024];

if (input_file == 0)
{
    fprintf(stderr,"Cannot open input file.\n");
}

/* skip the first line in csv file */
fgets(buffer, 1024, input_file);
while (1)
{

    if (fgets(buffer, 1024, input_file) != NULL)
    {
        puts(buffer);
        parseDataFromCSV(buffer);
        bzero(buffer,1024);
        break;
    } else {
        break;
    }


}


fclose(input_file);

最佳答案

你在while循环中有无限循环。

if (count == 0) {
    continue;
}

关于c - 在C中读取文件的奇怪行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39440119/

10-12 00:10
查看更多