MST

星途 面试题库

面试题:C语言结构体与文件操作的中等应用

请编写一个C程序,定义一个结构体,包含学生的姓名、年龄和成绩。然后将若干学生的信息写入到一个二进制文件中,再从该文件中读取这些信息并打印出来。要求处理文件操作可能出现的错误。
50.1万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_NAME_LENGTH 50
#define STUDENT_COUNT 3

// 定义学生结构体
typedef struct {
    char name[MAX_NAME_LENGTH];
    int age;
    float score;
} Student;

int main() {
    Student students[STUDENT_COUNT] = {
        {"Alice", 20, 85.5},
        {"Bob", 21, 90.0},
        {"Charlie", 22, 78.0}
    };

    FILE *file = fopen("students.bin", "wb");
    if (file == NULL) {
        perror("无法打开文件用于写入");
        return 1;
    }

    // 将学生信息写入二进制文件
    if (fwrite(students, sizeof(Student), STUDENT_COUNT, file) != STUDENT_COUNT) {
        perror("写入文件失败");
        fclose(file);
        return 1;
    }
    fclose(file);

    // 从二进制文件读取学生信息
    file = fopen("students.bin", "rb");
    if (file == NULL) {
        perror("无法打开文件用于读取");
        return 1;
    }

    Student readStudents[STUDENT_COUNT];
    size_t readCount = fread(readStudents, sizeof(Student), STUDENT_COUNT, file);
    if (readCount != STUDENT_COUNT) {
        perror("读取文件失败");
        fclose(file);
        return 1;
    }
    fclose(file);

    // 打印读取的学生信息
    for (int i = 0; i < STUDENT_COUNT; i++) {
        printf("姓名: %s, 年龄: %d, 成绩: %.2f\n", readStudents[i].name, readStudents[i].age, readStudents[i].score);
    }

    return 0;
}