如果以“w”打开一个文件,写入数据后,没有关闭,紧接着又以“r”打开该文件,此时不能正确读取文件内容,ftell文件为0,但是文件中却成功写入了数据。想要读取内容,要在写入操作后进行指针的移动(fseek,rewind等)才能读取。
FILE * fp = fopen("qqq","w");
int a=11120;
fwrite(&a,1,sizeof(a),fp);
printf("%d\n",ftell(fp)); //4
//rewind(fp);
fseek(fp,0,SEEK_CUR); //前面写的可读
fwrite(&a,1,sizeof(a),fp);
printf("%d\n",ftell(fp)); //8
int c;
//fclose(fp); //不关闭
fp = fopen("qqq","r");
printf("%d\n",ftell(fp)); //0
fread(&c,1,4,fp);
printf("%d\n",ftell(fp)); //4
fseek(fp,0,SEEK_END);
printf("%d\n",ftell(fp)); //4
printf("%d\n",c); //11120
fclose(fp);
ll qqq -rw-rw-r-- 1 An An 8 Aug 10 11:56 qqq
199

被折叠的 条评论
为什么被折叠?



