读书人

关于将数据输出到磁盘资料的奇怪情况

发布时间: 2012-09-18 16:21:42 作者: rapoo

关于将数据输出到磁盘文件的奇怪情况
代码:

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; 

读书人网 >C语言

热点推荐