C语言写文件乱码 求解

C语言写文件乱码 求解,第1张

虽然你的名字叫contact_list.txt,但你用fwrite(cp+i,sizeof(CARD),1,fp)写入文件,实际写入的是

二进制文件

,直接点开contact_list.txt肯定是

乱码

的。如果不希望这样的话,可以考虑用fprintf写文件,当然了,要自己实现下把CARD和写入字符串的转换。

先确认一下文件是二进制存的吗?如果是,用记事本打开它,应该是看不到数字的。不是说在记事本里输入字符1 2 3 4,然后保存成number.dat,程序就能正确读取的。

二进制读取的时候fopen要写成

1

fp=fopen("number.dat","rb")

rb表示binary:二进制读写。

这个函数以二进制形式对文件进行 *** 作。

按数据定义结构的写入保持数据结构的长度,对于数值类型,再用文本方式打开时表现为乱码。例如float a=12345.67,写入文件后为4个字节,打开后不是文本表示的8个字节。

写入数据用fprintf(fp,"%s %s %d 这种方式。不是 fscanf(), 另,注意写出时的格式里要有分隔符空格,否则下次读文件时shu,字符串,数字混在一起无法读。允许同时“读写”的文件,要注意读写位置的控制,必要时用到 回绕文件,或fseek。

扩展资料:

返回实际写入的数据项个数count。

说明:这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。

fseek对此函数有作用,但是fwrite函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。

参考资料来源:百度百科-fwrite


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7956089.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存