我正在尝试使用for循环读取C中的文件列表,但是它仅读取第一个文件,然后存在for循环,我不确定为什么。我是C语言的新手,所以我可能犯了一个愚蠢的错误,但是我已经坚持了一段时间。这是我的代码。
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#define MAXCHAR 1000
char* fileNames[] = {"file1.csv", "file2.csv"};
FILE* fp; //pointer to file
int main(){
for(int i = 0; i < sizeof(fileNames[i])/sizeof(char *); i++){
fp = fopen(fileNames[i],"r");
char line[MAXCHAR];
//If file can't be read
if(fp == NULL){
printf("Could not open file %s","latitude.csv");
return 0;
}
printf("Reading file %s\n",fileNames[i]);
while(fgets(line, MAXCHAR, fp) != NULL){
}
fclose(fp);
}
return 0;
}
答案 0 :(得分:2)
尺寸计算中有一个杂散数组下标,导致循环仅经过1次迭代即可终止:sizeof(fileNames[i])/sizeof(char *)
。
将其更改为:sizeof(fileNames)/sizeof(fileNames[0])