我在尝试使用 c fread() 调用从一个简单的文本文件中读取时遇到了一个非常奇怪的错误。
我制作了一个非常简单的程序来显示该错误:
int main(int argc ,char ** argv) {
FILE* fh = fopen("adult.txt","r");
if(fh==NULL){
printf("error opening file\n");
exit(0);
}
int s = 1000;
printf("cur before=%d\n",ftell(fh));
char* b = malloc (sizeof(char)*s);
int k =fread(b,sizeof(char),s,fh);
printf("cur after reading %d bytes =%d\n",k,ftell(fh));
return EXIT_SUCCESS;
}
我得到的输出是:
cur before=0
cur after reading 1000 bytes =1007
这正常吗? fread 返回数字“1000”,但光标(使用 ftell())显示 1007,我们将不胜感激。
最佳答案
这很正常。
'\n'
可以用两个字符表示,因此您会遇到偏差。
如果您不希望这种情况发生,请以二进制模式打开 finaly。
关于c - 为什么 ftell() 在 fread() 之后显示错误的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10651108/