|
5#
楼主 |
发表于 2013-9-14 08:12:48
|
只看该作者
rosynirvana 发表于 2013-9-13 11:24
一个是你声明了两个stu
第一个前面有分号所以stu没类型
读取的时候保存在main中stu的内存空间中,save那个 ...
已经改好了,可是为什么存储进去的学号和分数的是乱码形式啊?
这是什么原因啊,应该怎么改呢?
下面是代码:
#include <stdio.h>
#include <stdlib.h>
struct student
{int num;
char name[20];
int score;
}stu[5];
void save()
{FILE *fp;
int i;
if((fp=fopen("D:\\QQQ\\stu.dat","wb"))==NULL)
{printf("can not open file\n");
return;
}
for(i=0;i<5;i++)
if(fwrite(&stu,sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
int main()
{system("color f3");
printf("****欢迎使用学生信息查询系统****\n");
printf("\n");
printf("请输入学生信息:\n");
int i,a,b;
for(i=0;i<5;i++)
scanf("%d %s %d",&stu.num,stu.name,&stu.score);
printf("\n");
printf("录入学生成绩如下:\n");
for(i=0;i<5;i++)
printf("%d %s %d\n",stu.num,stu.name,stu.score);
printf("\n");
printf("请输入要查询学生学号:");
scanf("%d",&a);
printf("该学生的信息如下:\n");
printf("%d %s %d\n",stu[a-1].num,stu[a-1].name,stu[a-1].score);
printf("\n");
printf("如若有误,请输入错误信息学生学号:");
scanf("%d",&b);
printf("请输入纠正后的信息:\n");
scanf("%d %s %d",&stu[b-1].num,&stu[b-1].name,&stu[b-1].score);
printf("\n");
printf("已更正学生成绩如下:\n");
for(i=0;i<5;i++)
printf("%d %s %d\n",stu.num,stu.name,stu.score);
save();
printf("\n");
printf("录入学生成绩已保存在D:\\QQQ\\stu.dat\n");
printf("\n");
system("pause");
return 0;
}
|
|