关于将数据输出到磁盘文件的奇怪情况
代码:
- C/C++ code
#include"stdio.h"#include"string.h"main(){ char p[10]="abcd\r\n"; char a[10]; char b[10]; memset(a,0,sizeof(char)*10); memset(b,0,sizeof(char)*10); FILE *fp=fopen("d:\\cheshi.txt","w+"); fwrite(p,1,strlen(p)+1,fp); fclose(fp); fp=fopen("d:\\cheshi.txt","r"); fread(a,1,strlen(p)+1,fp); fclose(fp); printf("%s",a); fp=fopen("d:\\cheshi.txt","a+"); fwrite(p,1,strlen(p)+1,fp); fread(b,1,strlen(p)+1,fp); printf("%s",a); fclose(fp); return 0;}
控制台输出:
abcd
abcd
cheshi.txt情况:
abcd
abcd
屯屯屯?
求解,这是什么原因
[解决办法]
fwrite(p,1,strlen(p)+1,fp);//写完后,文件的指针已经被你移动到文件的末尾了
fread(b,1,strlen(p)+1,fp);//从文件的末尾处读取数据,肯定读取的是脏数据
控制台输出的数据是2次abcd那是因为你都输出了a,而你第二次读取的数据在b中呢
[解决办法]
- C/C++ code
fp=fopen("d:\\cheshi.txt","a+");//这里文件指针为追加 fwrite(p,1,strlen(p)+1,fp); fread(b,1,strlen(p)+1,fp);//fp读取脏数据的时候,文件里面被读取部分也显示出来了脏数据 printf("%s",a); fclose(fp); return 0;