【发布时间】:2019-05-08 15:29:41
【问题描述】:
我将学生信息记录到 txt 文件,但是当我想从文件中读取数据时 只需阅读第一行的信息。我还计算了学生的平均值,但是当我想读取平均值时它不起作用。
FILE *fout;
fout = fopen("English Class.txt","w");
printf("Please enter student number of class : ");
scanf("%d", &x.classNum);
fprintf(fout, "Class Number : %d\n",x.classNum);
for(i=0; i<x.classNum; i++){
printf("Please Enter %d.Student Name : ",i+1);
scanf("%s",&x.Name);
printf("Please Enter %d.Student Surname : ",i+1);
scanf("%s",&x.Surname);
printf("Please Enter %d.Student Number : ",i+1);
scanf("%d",&x.StudentNumber);
printf("Please Enter %d.Student Score : ",i+1);
scanf("%d",&x.EnglishScore);
x.total = x.total + x.EnglishScore;
fprintf(fout, "\nStudent Name : %s %s Student Number : %d Student Score : %d\n", x.Name, x.Surname, x.StudentNumber, x.EnglishScore);
}
x.average = x.total / x.classNum;
fprintf(fout, "\n\nClass Average is : %f", x.average);
fclose(fout);
我从顶级代码获取学生记录
FILE *fin;
fin = fopen("English Class.txt","r");
fscanf(fin, "Class Number : %d\nStudent Name : %s %s Student Number : %d Student Score : %d\n\nClass Average is : %f",&x.classNum, &x.Name, &x.Surname, &x.StudentNumber, &x.EnglishScore, &x.average);
fclose(fin);
printf("Class Number : %d\n", x.classNum);
for(i=0; i<x.classNum; i++){
fscanf(fin, "\nStudent Name : %s %s Student Number : %d Student Score : %d\n\nClass Average is : %f", &x.Name, &x.Surname, &x.StudentNumber, &x.EnglishScore);
fclose(fin);
printf("\nStudent Name : %s %s Student Number : %d Student Score : %d\n", x.Name, x.Surname, x.StudentNumber, x.EnglishScore);
}
printf("\n\nClass Average is : %f", x.average);
【问题讨论】:
-
*scanf()函数返回一个值,指示分配的数量。使用该值进行错误检查:if (fscanf(...) != EXPECTED_ASSIGNMENTS) /* report error or maybe... */ exit(EXIT_FAILURE); -
请出示minimal reproducible example 以及您阅读的文件的最小样本。你可以edit你的问题。
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及重现它所需的最短代码,其中包括输入文件,在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建minimal reproducible example。