这一阶段已经学过结构体、指针、动态内存、文件和错误处理。现在把它们组合成一个可以真正保存数据的通讯录。
功能范围
第一版只实现:
- 添加联系人;
- 按姓名查找;
- 列出全部联系人;
- 删除联系人;
- 保存到文本文件;
- 启动时从文本文件加载。
不要一开始就加入登录、网络同步、图形界面等功能。综合项目的目标是练习清晰边界,而不是无限堆需求。
数据模型
2026/7/8大约 4 分钟
这一阶段已经学过结构体、指针、动态内存、文件和错误处理。现在把它们组合成一个可以真正保存数据的通讯录。
第一版只实现:
不要一开始就加入登录、网络同步、图形界面等功能。综合项目的目标是练习清晰边界,而不是无限堆需求。
学完本篇,你会理解:
struct。typedef 如何简化类型名。之前我们学的变量都是单一类型:int、char、double。但现实中很多事物需要多个属性一起描述。比如一个学生,有学号、姓名、成绩,这些属性类型不同,却属于同一个人。
学完本篇,你会掌握:
-> 运算符的用法。指针不仅可以指向 int、char,也可以指向结构体。用法和之前学的指针一样:
#include <stdio.h>
#include <string.h>
typedef struct {
int id;
char name[20];
float score;
} Student;
int main(void) {
Student s = {1, "Alice", 90.5};
Student *p = &s; // p 指向 s
// 通过 *p 访问成员
printf("学号:%d\n", (*p).id);
printf("姓名:%s\n", (*p).name);
printf("成绩:%.1f\n", (*p).score);
return 0;
}