简单的c语言文件操作问题
有一存储很多学生成绩的文本文件(学生与课程数不限),每个学生的数据包括学号(10个数字)、姓名(最多4个汉字)、性别、课程名称(最多7个汉字)、成绩(整数)。从键盘输入某门课程的名称,要求在文件中查找有无相应的课程(可能有多条记录或没有),有则计算并输出该课程的选课人数与平均成绩,无则报告没有。编程可用素材:printf("请输入要计算平均成绩的课程名称:")、printf("文件打开失败,请检查文件名及路径是否正确、文件是否存在!")、printf("\n计算结果为:\n")、printf("文件中没有名称为“…”的课程\n"…、printf("课程“…”有 … 人选学,平均成绩为…。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
FILE *fp;
int num;
char name[9], search[15];
char sex[3];
char course[15];
int scores, i = 0;
double sum = 0, ave;
printf("请输入要计算平均成绩的课程名称:");
gets(search);
fp = fopen("xscj.txt", "r");
if (fp == NULL)
{
printf("文件打开失败,请检查文件名及路径是否正确、文件是否存在!");
exit(1);
}
while (fscanf(fp, "%d %s %s %s %d", &num, name, sex, course, &scores) != EOF)
{
if (strcmp(search, course) == 0)
{
i++;
sum += scores;
}
if (strcmp(search, course) != 0)
{
printf("文件中没有名称为“%s”的课程\n", search);
break;
}
}
ave = sum / i;
printf("\n计算结果为:\n");
printf("课程“%s”有 %d 人选学,平均成绩为%.1lf", search, i, ave);
fclose(fp);
return 0;
}