读书人

fread()为什么读出的数据和fwrite()的

发布时间: 2012-03-04 11:13:33 作者: rapoo

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的地址,上是的

读书人网 >C语言

热点推荐