所以我想从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/