新手求助。。求大侠

asdf20071203 2013-04-20 01:57:16
把结构体数组的信息打印到文件上,编译通过了,用记事本打开文件,一堆乱码。。。求好人解答

#include<stdio.h>

struct Student
{
char name[10];
int num;
int age;
char addr[15];
}stud[3];

void save()
{
FILE *fp;
int i;
if((fp=fopen("stu1.dat","wb"))==NULL)
{
printf("can not open\n");
return;
}
for(i=0;i<3;i++)
if(fwrite(&stud[i],sizeof(struct Student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}

int main()
{
int i;
printf("please enter data of students\n");
for(i=0;i<3;i++)
scanf("%s %d %d %s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
save();
return 0;
}
...全文
81 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
学习点滴 2013-04-20
  • 打赏
  • 举报
回复
fwrite是以2进制的形式写入,用记事本打开是乱码,但数据没有错,可以用fread读出。如果想不乱码,可以用fprintf函数,但是没法一次性写完一个结构体。可以用下面的代码
for(i=0;i<3;i++)
fprintf(fp,"%s\t%d\t%d\t%s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
if (ferror (fp))
     printf("file write error\n");
fclose(fp);
starytx 2013-04-20
  • 打赏
  • 举报
回复
乱码无所谓,你在读取出来只要数据正确就可以了。

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧