我有一个名为 DB.txt 的文件,我在 for 循环中读取行并将这些行打印出来,但没有打印任何内容。我认为值得一提的是,我在 MAC 上使用 CLion 进行编码,因为当我处理文件时总是会出现一些问题(例如,我尝试写入文件,但不是我输入的内容,而是在该文件中总是出现垃圾33)
所以我的代码现在看起来像这样
int fileInput(struct nn *record){
FILE *f;
f = fopen("DB.txt", "r");
char buffer[80];
if(f == NULL){
printf(stderr, "Cannot open file");
return 1;
}
while (fgets(buffer, sizeof(buffer), f) != NULL) {
printf("%s", buffer);
}
// int j = 0;
// char *token = strtok(buffer, " ");
// while(token != NULL){
// strcpy(record[x].params[j], token);
// token = strtok(NULL, " ");
// j++;
// }
// x++;
}
}
fclose(f);
return 1;
}
(注释部分应该用空格分隔行并将每个字符串添加到结构体数组中,但现在它不相关) 我只是不明白为什么它不打印任何东西
您的工作目录可能与包含该文件的文件夹不同
DB.txt
,因为您正在从相对路径读取。但您可能错过了该错误,因为您使用 printf
来打印错误,而不是使用 fprintf
打印到文件句柄 (stderr
)。
您可以参考另一个 StackOverflow 答案来了解如何设置工作目录。