新手。求大侠
新手求助。。求大侠
把结构体数组的信息打印到文件上,编译通过了,用记事本打开文件,一堆乱码。。。求好人解答
#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;
}
------解决方案--------------------
乱码无所谓,你在读取出来只要数据正确就可以了。
------解决方案--------------------
fwrite是以2进制的形式写入,用记事本打开是乱码,但数据没有错,可以用fread读出。如果想不乱码,可以用fprintf函数,但是没法一次性写完一个结构体。可以用下面的代码
把结构体数组的信息打印到文件上,编译通过了,用记事本打开文件,一堆乱码。。。求好人解答
#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;
}
乱码
------解决方案--------------------
乱码无所谓,你在读取出来只要数据正确就可以了。
------解决方案--------------------
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);