需要整理三名学生的三科成绩,从键盘上输入结构体数组各元素的值,将结构体数组的内容写入到一个文件中,并从文件中读出,并输出到屏幕上。
#include <stdio.h>
#include <stdlib.h>
struct Student
{
char name[10];
int num[3];
};
int main()
{
struct Student stu[3];
FILE *file;
file=fopen("file.txt","w");
if(file!=NULL)
{
for(int i=0;i<3;i++)
{
printf("姓名:");
scanf("%s",stu[i].name);
scanf("%d %d %d",&stu[i].num[0],&stu[i].num[1],&stu[i].num[2]);
fputs(stu[i].name,file);
fputc('\t',file);
fprintf(file,"%d %d %d",stu[i].num[0],stu[i].num[1],stu[i].num[2]);
if(i!=2)
{
fputc('\n',file);
}
}
}
fclose(file);
char line[50];
file=fopen("file.txt","r");
while(!feof(file))
{
fgets(line,50,file);
printf("%s",line);
}
return 0;
}
解答如下
#include <stdio.h>
#include<stdlib.h>
struct stu
{
double score1;
double score2;
double score3;
};
void save(struct stu Stu[],int num)
{
FILE *fp;
fp = fopen("test.txt","a+");
if(fp==NULL)
{
printf("Open filefailure!");
exit(1);
}
else
{
for(int i=0;i<num;i++)
{
fprintf(fp,"%lf %lf %lf\n",Stu[i].score1,Stu[i].score2,Stu[i].score3);
}
}
}
void read(struct stu Stu[],int num)
{
FILE *fp;
fp = fopen("test.txt","r");
if(fp==NULL)
{
printf("Open filefailure!");
exit(1);
}
else
{
for(int i=0;i<num;i++)
{
fscanf(fp,"%lf %lf %lf\n",&Stu[i].score1,&Stu[i].score2,&Stu[i].score3);
}
}
}
void prin(struct stu Stu[],int num)
{
for(int i=0;i<num;i++)
{
printf("成员%d成绩:%.2lf %.2lf %.2lf\n",i+1,Stu[i].score1,Stu[i].score2,Stu[i].score3);
}
}
int main()
{
int num=3;
struct stu Stu[num];
for(int i=0;i<num;i++)
{
printf("输入成员%d的三个成绩:\n",i+1);
scanf("%lf%lf%lf",&Stu[i].score1,&Stu[i].score2,&Stu[i].score3);
}
save(Stu,num);
read(Stu,num);
prin(Stu,num);
return 0;
}