该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include "string.h" /*字符串函数*/
#include "conio.h" /*屏幕操作函数*/
#include "mem.h" /*内存操作函数*/
#include "ctype.h" /*字符操作函数*/
#include "malloc.h" /*动态地址分配函数*/
typedef struct {
char name[10];
char num [6];
float score[3];
}student ;
FILE*fp;
int i;
char tmp[10];
void write()
{ char flag;
fp=fopen("a.txt","ab+");
if(fp==NULL)
printf("文件打开失败!");
student stu ;
for(;;)
{printf("请输入学生的学号:");
gets(stu.num);
//getchar();
printf("请输入学生的姓名:");
gets(stu.name);
//getchar();
printf("语文:");
scanf("%f",&stu.score[0]);getchar();
printf("英语:");
scanf("%f",&stu.score[1]);getchar();
printf("数学:");
scanf("%f",&stu.score[2]);getchar();
i=fwrite (&stu,sizeof(student),1,fp);
if(i!=1) printf("Write error!");
printf("请选择是否继续添加!只'y'为继续添加,其它字母为退出添加!\n");
flag=getch();
if(flag!='y') break;
}
fclose(fp);
}
void read()
{fp=fopen("a.txt","rb+");
student stu ;
if(fp==NULL)
printf("文件打开失败!");
else
{i=fread(&stu,sizeof(student),1,fp);
printf ("姓名 学号 语文 数学 英语\n");
{
printf("%s %s %.1f %.1f %.1f\n",stu.name,stu.num,stu.score[0],stu.score[1],stu.score[2]);
}
if(i!=1) printf("Read error!");
}
fclose(fp);
}
int main()
{
write();
read();
return 0;
}
在我先用write函数输入两个同学的数据后,read函数只显示第一个同学的数据,为什么?要怎么改函数才能 输出所有同学的数据?