跳转至

第 4 章:结构体、文件与模块

📋 本章概览

项目 内容
学习时长 45 分钟
核心概念 结构体、文件、头文件、编译单元
核心比喻 结构体是表单,头文件是接口说明,源文件是具体办事窗口
实践任务 拆分一个可保存联系人的小程序
难度等级 ★★★☆☆

4.1 用结构体描述对象

typedef struct {
    char name[64];
    char phone[32];
} Contact;

结构体把相关字段组合成一个有意义的类型。

4.2 文件读写

FILE *file = fopen("contacts.txt", "a");
if (file == NULL) {
    perror("fopen");
    return 1;
}

fprintf(file, "%s,%s\n", contact.name, contact.phone);
fclose(file);

文件打开可能失败,写入和关闭也应当在真实程序中检查返回结果。

4.3 头文件和源文件

contacts/
├── main.c       # 入口和菜单
├── contacts.c   # 联系人操作
└── contacts.h   # 类型和函数声明

头文件描述接口,源文件提供实现。这样可以让编译单元更小,也更容易测试。

✏️ 课后练习

把通讯录的新增和查询功能拆分到 contacts.c,在 main.c 中只保留菜单和输入流程。

✅ 验证步骤

把程序拆成一个头文件和两个源文件,使用同一条编译命令构建;新增联系人后重新启动,确认文件中的数据仍可读取。

📝 本章总结

  • 结构体把相关字段组合成有意义的类型。
  • 文件读写必须检查打开、写入和关闭结果。
  • 头文件声明接口,源文件提供实现。

🔮 下一章预告

最后一章会把通讯录的菜单、文件、内存和模块组合成完整项目。