c语言结构体文件写入乱码.......

来源:百度知道 编辑:UC知道 时间:2024/05/06 05:24:31
#include"stdafx.h"//倒入头文件
struct copy_facilities{//影片属性结构体
char title[5];
char copies[3];
char rental_duration[3];
char director[20];
char actor[20];
char genre[10];
};

void main()添加影片函数
{FILE *fp;copy_facilities copy1;//定义
fp=fopen("copy_facilities.txt","a");//打开文件
scanf("%s%s%s%s%s%s",©1.title,©1.copies,©1.rental_duration,copy1.director,copy1.actor,copy1.genre);//输入影片属性的各项值
fwrite(©1,sizeof(struct copy_facilities),1,fp);//写入文件
fclose(fp);//关闭文件
}

fwrite是将内存中的数据不经转换直接写入文件,所以文件中保存的是二进制形式,当然看到乱码了。
你可以试试:
fprintf(fp1,"%s%s%s%s%s%s",copy1.title,copy1.copies,copy1.rental_duration,copy1.director,copy1.actor,copy1.genre);

另外,输入字符串时,不用取地址。
scanf("%s%s%s%s%s%s",copy1.title,copy1.copies,copy1.rental_duration,copy1.director,copy1.actor,copy1.genre);

详细可以看看
http://zhidao.baidu.com/question/43885020.html