首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

fread()为什么读出的数据和fwrite()的不一样?该如何处理

2012-03-04 
fread()为什么读出的数据和fwrite()的不一样?比如charbuff1[] 012345678 charbuff2[]{0,1,2,3,4,5,6,

fread()为什么读出的数据和fwrite()的不一样?
比如
char   buff1[]= "012345678 ";
char   buff2[]={0,1,2,3,4,5,6,7,8,9};
char   Rbuff[100];

fstream=open( "/home/code/file/data.dat ", "a+ ");

fwrite(buff1,1,sizeof(buff1),fstream);
fwrite(buff2,1,sizeof(buff2),fstream);

fread(Rbuff,1,1,fstream);
printf( "%x ",Rbuff);

close(fstream);

===================================================
在使用vi打开data.dat时显示:0123456789^@^@^A^B^C^D^E^F^G^H
如果执行两遍可执行文件在显示的两串字符中有空格
但是我想从文件中读取一个字符然后打印的结果却是fffff82(我本以为回是30H)
能帮我解释一下麽?

[解决办法]
printf( "%x ",Rbuff);
你打印的是Rbuff的地址
[解决办法]
想打印读取的字符?
printf( "%s ", Rbuff);
[解决办法]
楼上的是正解
[解决办法]
你打十六进制数上哪一样去
你是按字节读出来的,读出来的还是一个串
[解决办法]
记得要倒带.


#include <stdio.h>

int main()
{
char buff1[]= "012345678 ";
char buff2[]={0,1,2,3,4,5,6,7,8,9};
char Rbuff[100];
char a = '0 ';
FILE *fstream = fopen( "data.dat ", "a+ ");

fwrite(buff1,1,sizeof(buff1),fstream);
fwrite(buff2,1,sizeof(buff2),fstream);
rewind(fstream);
fread(Rbuff,1,1,fstream);
printf( "%x ",*Rbuff);

fclose(fstream);

return 0;
}

[解决办法]
你輸出的是rbuff的地址,樓上是對的

热点排行