首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新手又来请问老师了!

2013-10-12 
新手又来请教老师了!!运行都没问题,为什么记事本里面却出现乱码呢?请老师指教![解决办法]因为结构体对齐和

新手又来请教老师了!!
运行都没问题,为什么记事本里面却出现乱码呢?请老师指教!

                              
[解决办法]
因为结构体对齐和变量类型的原因吧,并且写的时候,是以二进制的方式,以结构体占用空间大小为单位进行的
换成以结构体成员的方式,单独将每个成员用sprintf转换成字符串再写入文件
[解决办法]
1) fcanf,fprintf 配对使用
2)fread,fwrite 配对使用
3)用二进制编辑器查看二进制文件,没有的话VC勉强可用。
4)文本文件,用记事本打开,其他用二进制打开。
5)二进制数据,用文本方式查看往往是乱码。
6)汉字系统下,二进制文件,看着也挺乱的,要有耐心。
7)避免混合使用,二进制和文本读写函数。

[解决办法]
你是用fwrite 和 fread 来读写的,他们两个是按字节来读写文件的。

你如果要使得在文本上部显示乱码,可以用fprintf 和 fscanf 来进行格式化的读写

补充:
感觉你的fwrite 和 fread 有点问题 

size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); //函数用法

if((fwrite(&stu,sizeof(struct student),N,fp))!=N){//stu已经是地址了 不需要再加&  fread也一样

热点排行