如何确定文件结尾?
FILE* cfl;
if ((cfl=fopen(csv, "r")) == NULL) {
printf("Cannot open file for read.\r\n");
exit(1);
}
while (!feof(cfl)) {
int i = 0;
char* buf = (char*)malloc(sizeof(char));
while ((buf[i] = fgetc(cfl)) != '\n') {
i++;
buf = (char*)realloc(buf, sizeof(char)*(i+1));
printf("=%d= ", i);
}
buf[i] = '\0';
printf("+%d+ ", i);
printf("%s\r\n", buf);
free(buf);
}
fclose(cfl);
一切正常,直到最后一行。由于文件在最后一个换行符之后结束,因此程序在while ((buf[i] = fgetc(cfl)) != '\n') {...}
在检查 “ i” 是否不超过某个较大的值之后,我可以中断循环,但这是错误的。如何正确确定文件的结尾以及为什么 feof 在这种情况下不起作用?
答案 0 :(得分:7)
fgetc
函数返回一个int
,文件末尾的值为EOF
。这是典型的方法:
int c;
while ((c = fgetc(cfl)) != EOF) {
...
}