qfedu-c-level/day14/homework/h2.c

48 lines
1.0 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 按行读取score.txt文件的所有内容打印成绩及格的学号和成绩。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct stu_s
{
int sid;
char dh; // 逗号
float score;
struct stu_s *next;
} STU;
int main()
{
FILE *fp = fopen("score.txt", "r");
if (NULL == fp)
{
return 1;
}
// 计算文件大小
fseek(fp, 0, SEEK_END);
long file_size = ftell(fp);
printf("score.txt 文件大小: %ld B\n", file_size);
// 重置光标位置
fseek(fp, 0, SEEK_SET); // 等同于使用 rewind(fp);
// 按照 STU 的结构存储数据,计算出以存放学生数量
int stu_num = file_size / sizeof(STU);
printf("学生数量: %d\n", stu_num);
printf("\n学号\t成绩\n");
for (int i = 0; i < stu_num; i++)
{
STU *s = calloc(1, sizeof(STU));
fread(s, sizeof(STU), 1, fp);
if (s->score > 60)
printf("%d\t%.2f\n", s->sid, s->score);
free(s);
}
fclose(fp);
return 0;
}