用c语言(3)导入学生信息:从“student.txt”中读取学生信息,并按二进制方式写到文件“student.dat”中。“student.txt”不存在和导入数据完成后在屏幕上输出相应的提示信息。(4)输出学生成绩表:按二进制方式从“student.dat”文件中顺序读取每一个学生的信息,并在屏幕上输出(如“图8-5”所示)。“student.dat”不存在时给出错误提示。
时间: 2023-02-06 10:24:07 浏览: 717
下面是一个示例代码,它实现了第 (3) 和第 (4) 个任务的功能:
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
// 定义学生信息结构体
typedef struct {
char name[20];
int age;
float score;
} Student;
// 从文本文件 "student.txt" 中读取学生信息
int read_students_from_txt(Student *students) {
// 打开文本文件 "student.txt"
FILE *fp = fopen("student.txt", "r");
if (fp == NULL) {
// 文件不存在
printf("文件 student.txt 不存在\n");
return 0;
}
// 读取文本文件中的学生信息
int num_students = 0;
while (fscanf(fp, "%s%d%f", students[num_students].name, &students[num_students].age, &students[num_students].score) == 3) {
num_students++;
}
// 关闭文件
fclose(fp);
return num_students;
}
// 将学生信息写入二进制文件 "student.dat"
void write_students_to_dat(const Student *students, int num_students) {
// 以二进制写入方式打开文件 "student.dat"
FILE *fp = fopen("student.dat", "wb");
if (fp == NULL) {
printf("无法打开文件 student.dat\n");
return;
}
// 将学生信息写入文件
fwrite(students, sizeof(Student), num_students, fp);
// 关闭文件
fclose(fp);
}
// 从二进制文件 "student.dat" 中读取学生信息
int read_students_from_dat(Student *students) {
// 以二进制读取方式打开文件 "student.dat"
FILE *fp = fopen("student.dat", "rb");
if (fp == NULL) {
printf("文件 student.dat 不存在\n");
return 0;
}
// 读取文件中的学生
阅读全文