【发布时间】:2015-05-19 07:35:50
【问题描述】:
我正在尝试从输入文件中输出作业的成绩,以及输出每个作业的平均、最低和最高成绩。
例如,一个有 4 个学生和 3 个作业的班级的输入文件可能如下所示:
8.5, 10.5, 90.5
49.5, 99, 97
88, 88, 100
88.5, 99, 0
输出应该是
Student grades from the input file:
8.5, 10.5, 90.5
49.5, 99.0, 97.0
88.0, 88.0, 100.0
88.5, 99.0, 0.0
Assignment # 1 stats
avg = 58.6
min = 8.5
max = 88.5
Assignment # 2 stats
avg = 74.1
min = 10.5
max = 99.0
Assignment # 3 stats
avg = 71.9
min = 0.0
max = 100.0
到目前为止,我被困在必须输出文件内容的第一部分。这是我到目前为止所拥有的,对此或功能的任何帮助将不胜感激。
int main(int argc, char *argv[]) {
FILE *input_file;
int line_number = 0;
char *next_field;
char line[MAX_STUDENTS+1];
input_file = fopen(argv[1], "r");
//OUTPUT THE GRADES FROM THE INPUT FILE
while (1) {
fgets(line, MAX_STUDENTS, input_file);
if (feof(input_file))
break;
next_field = strtok(line, " \n");
while (next_field != NULL) {
printf("==================================/n");
printf("Student grades from the input file/n");
printf("==================================/n");
printf("%s,", next_field);
next_field = strtok(NULL, " \n");
}
}
【问题讨论】:
-
char line[MAX_STUDENTS+1];应该重新考虑。使用strtod将字符串转换为双精度。
标签: c strtok text-parsing