文件读取,在屏上打印,打完信息多打很多乱码?
大家好,我是菜鸟C_er,刚学C语言不久,今天写一个学生信息管理程序,保存部分以及输出打印部分代码如下!主函数调用new_file(),new_file()调用save(),主函数再调用browse().
输入信息:1001,gmr,M,21,jiangxi
打印结果:NO.1 1001,gmr ,M,21,jiangxi,i,1769498478,
请高手指点这是为什么?以及应怎样改才能正常显示?
N 是定义的一个常量,表示学生的个数。
以下是定义struct student型数据
struct student
{long int number;
char name[10];
char sex;
int age;
char addr[20];
int yuwen;
int shuxue;
int sum;
};
struct student stu[N];
void new_file()
{ void save();
int i;
for (i=0;i<N;i++)
scanf("%ld,%s,%c,%d,%s",&stu[i].number,stu[i].name,&stu[i].sex ,&stu[i].age ,stu[i].addr);
save();
printf("保存成功!");
}
void save()
{FILE *fp;
int i;
if ((fp=fopen("student1.dat","wb"))==NULL)
{printf("文件打开失败!\n");
return;
}
for (i=0;i<N;i++)
if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
{printf("写入失败!\n");
return;
}
fclose(fp);
}
void browse() //查看
{
printf("以下是学生信息\n");
int i;
FILE *fp;
if ((fp=fopen("student1.dat","rb"))==NULL)
{printf("文件打开失败!\n");
return;
}
for (i=0;i<N;i++)
{fseek(fp,i*sizeof(struct student),0);
fread(&stu[i],sizeof(struct student),1,fp);
printf("%d %ld,%s,%c,%d,%s\n",i+1,stu[i].number,stu[i].name,stu[i].sex ,stu[i].age ,stu[i].addr);
}
fclose(fp);
return;
}