如果以“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