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