1)定义一个结构体类型stud (int id, char name[20], char banj[30], char sex, float scorel,float score2, float total)
2)定义 个结构体数组s[5],并初始化前2个人的数据,从键盘输入3个人的数据。
3)将这5个人的数据写入到文件a.txt中
4)从a.txt中读出数据,存放在s[5]中,用循环实现5个人数据的计算并屏幕输出。
for循环录入剩余3个学生数据后,用fopen打开文件,用fprintf逐个写入文件就是了。
读取文件用fscanf函数读取就可以了
参考如下:
#include <stdio.h>
struct stud
{
int id;
char name[20];
char banj[30];
char sex;
float scorel;
float score2;
float total;
};
int main()
{
struct stud s[5]={ {111,"张三","一班",'M',70,80,150},{112,"李四","二班",'M',70,80,150} };
int i;
FILE* fp;
printf("请输入3个学生的信息:\n");
for(i=0;i<3;i++)
{
printf("请输入学号:");
scanf("%d",&s[i+2].id); getchar(); //接收回车符
printf("请输入姓名:");
scanf("%s",s[i+2].name); getchar(); //接收回车符
printf("请输入班级:");
scanf("%s",s[i+2].banj); getchar(); //接收回车符
printf("请输入性别(F/M):");
s[i+2].sex = getchar();
printf("请输入成绩1:");
scanf("%f",&s[i+2].scorel);
printf("请输入成绩2:");
scanf("%f",&s[i+2].score2);
s[i+2].total = s[i+2].scorel + s[i+2].score2;
}
if ((fp=fopen("a.txt","w")) == 0)
{
printf("文件打开失败\n");
return 0;
}
//写入文件
for (i=0;i<5;i++)
{
fprintf(fp,"%d %s %s %c %f %f %f\n",s[i].id,s[i].name,s[i].banj,s[i].sex,s[i].scorel,s[i].score2,s[i].total);
}
fclose(fp);
//读取文件并显示
if((fp=fopen("a.txt","r"))==0)
{
printf("文件打开失败\n");
return 0;
}
i = 0;
while (!feof(fp))
{
fscanf(fp,"%d %s %s %c %f %f %f\n",&s[i].id,s[i].name,s[i].banj,&s[i].sex,&s[i].scorel,&s[i].score2,&s[i].total);
if(s[i].id > 0)//避免读入空行
{
printf("%d %s %s %c %f %f %f\n",s[i].id,s[i].name,s[i].banj,s[i].sex,s[i].scorel,s[i].score2,s[i].total);
i++;
}
}
fclose(fp);
return 0;
}
哪部分有困难?