你写进去的是文本啊,文本的二进制形式也是可读的,你写一点int啊double啊你就知道二进制和文本的写入区别了。
我们提供的服务有:做网站、网站制作、微信公众号开发、网站优化、网站认证、陆港ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的陆港网站制作公司
你怎么输出的?
二进制如果以文本输出,自然会有很多乱码。
你可以用"%x"格式输出看看
char
a;
a=fgetc(fp1);
printf("%c",
a);/*这样肯定有乱码*/
printf("%x",
a);/*这样就是16进制*/
fwrite函数
【补充】:
功功能:
c语言函数,向文件写入一个数据块
2用法:
size_t
fwrite(const
void*
buffer,
size_t
size,
size_t
count,
file*
stream);
注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
返回值:返回实际写入的数据块数目
(1)buffer:是一个指针,对fwrite来说,是要获取数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针;
(5)返回实际写入的数据项个数count。
说明:写入到文件的哪里?
这个与文件的打开模式有关,如果是w+,则是从file
pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
fseek对此函数有作用,但是fwrite[1]
函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(file
*fp)函数同步。
主要就是二进制文件的读写、结构体的定义和使用。
fopen函数 以 "ab+" 方式打开文件,用fwrite函数写入内容; "b" 方式打开文件,读取内容;