C++,从txt文件中读取学生成绩

2024-12-20 21:26:31
推荐回答(1个)
回答1:

我看了你的程序,给你改了两处(见注释),完整的程序如下:
#include
#include
#define N 4/*学生人数*/
#define M 5/*课程数*/

struct student
{
int id;
char name[20];
float mark[M];/*每门课的成绩*/
float sum[4];/*总分 平均成绩 最高分 最低分*/
};
typedef struct student STD;

int main()
{
STD st[N];
int i,h,j,k;
FILE *fp,*fp2;;

if((fp=fopen("E:\\11.txt","r"))==NULL)
{
printf("无法打开该文件!\n");
exit(0);
}

for(i=0;i {
fscanf(fp,"%d ",&st[i].id);
fscanf(fp,"%c",&st[i].name[0]);
h=0;
while (st[i].name[h]!=' ')
{
h++;
fscanf(fp,"%c",&st[i].name[h]);
}
st[i].name[++h]='\0';//这里加了一句,以添加字符串尾部。
for (j=0;j fscanf(fp,"%f",&st[i].mark[j]);//这里把fscanf(fp,"%lf",&st[i].mark[j]);改成了fscanf(fp,"%f",&st[i].mark[j]);即%lf改成%f
}

for(i=0;i {
printf("%-3d%-5s",st[i].id,st[i].name);
for(j=0;j printf(" %.2f",st[i].mark[j]);
printf("\n");
}

return 0;
}