C语言文件输出时,输入数据后为什么会出现乱码

 我来答
祈倩语守洛
2020-04-06 · TA获得超过3.1万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:683万
展开全部
if(fwrite(&stud[i],sizeof(struct
studentType),1,fp)!=1)
简单看了下,这行有问题,往文件里写的时候是把一个字符串写进去,stud[i]是一个struct,强行把它序列化的话,内存中的存储不是连续的,这样写就会写入一些没用的数据,导致出错。考虑一下怎么把struct序列化,再看看struct的中的字节是怎么对齐的,建议而已
似曼雁京宣
2020-03-18 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:31%
帮助的人:810万
展开全部
先确认一下文件是二进制存的吗?如果是,用记事本打开它,应该是看不到数字的。不是说在记事本里输入字符1
2
3
4,然后保存成number.dat,程序就能正确读取的。
二进制读取的时候fopen要写成
fp=fopen("number.dat","rb");rb表示binary:二进制读写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
海理函雨
2020-02-15 · TA获得超过3万个赞
知道小有建树答主
回答量:1.1万
采纳率:34%
帮助的人:840万
展开全部
fwrite(&stud[i],sizeof(struct
studentType),1,fp)
你这种写入方式是直接将这个数据的内存原封不动的拷贝到文件当中。
在C语言中,内存中的结构体的存储并不是所有数据连续的。
你可以在网络上搜索一下结构体的对齐原则。
这种原则是C语言中,结构体存储结构的原理。
如果你希望能更好的理解。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
锁盼盼宾逸
2020-01-22 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:35%
帮助的人:725万
展开全部
fwrite函数保存数据时整型数据将会保存为对应的ASCII字符
比如48就会被保存为‘0’
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式