C语言实现实用通讯录系统

需积分: 49 15 下载量 2 浏览量 更新于2024-09-15 2 收藏 9KB TXT 举报
"C语言实现的实用通讯录程序,运用了结构体和链表的数据结构,包括添加、删除、查找、打印联系人等基本功能。程序还包括文件的读写操作,方便保存和恢复数据。" 在C语言中,创建一个通讯录程序涉及到的关键知识点有以下几个方面: 1. **结构体(Struct)**: - 结构体是C语言中的一种复合数据类型,可以将不同类型的数据组合在一起。在这个通讯录程序中,定义了一个名为`node`的结构体,包含姓名(`name`)、电话号码(`pnum`)和性别(`sex`)三个成员,以及一个指向下一个节点的指针(`next`)。 2. **链表数据结构**: - 链表是一种动态数据结构,它的元素(节点)不是在内存中连续存储的。`node`结构体的`next`指针用于链接多个节点,形成链表。通过指针操作,可以在链表中进行插入、删除等操作。 3. **函数声明与定义**: - `begin()`, `setnull()`, `print()`, `add()`, `putline()`, `search1()`, `search2()`, `search()`, `strcmp1()`, `printnode()`, `delet()`, `decre1()`, `decre2()`, `delet1()`, `clear()`, `decide()`, `savef()`, `readf()`, `insert()` 是程序中声明的函数,它们分别实现了通讯录的基本功能,如初始化链表、清空链表、查找、比较字符串、打印节点、删除、保存和读取文件、插入节点等。 4. **文件操作**: - `savef()` 和 `readf()` 函数分别用于将通讯录数据保存到文件和从文件中读取数据。这通常涉及文件打开、读写和关闭的操作。 5. **内存管理**: - 使用 `malloc.h` 头文件,程序可能包含了动态内存分配和释放的函数,例如 `malloc()` 和 `free()`,以根据需要创建和销毁链表节点。 6. **循环与选择控制结构**: - 在主函数 `main()` 中,使用了一个无限循环 (`while(1)`),在用户输入特定选项后执行相应操作,如查找、删除、保存等。`decide()` 函数用于处理用户的输入并决定执行哪个功能。 7. **字符串处理**: - `strcmp1()` 函数可能是一个自定义的字符串比较函数,用于比较两个字符串是否相等。在C语言中,通常用 `strcmp()` 函数来比较字符串,但这里可能是为了特定需求进行了自定义。 8. **指针操作**: - 程序中的很多函数都使用了指针参数,例如 `change(linklist* head)` 和 `add(linklist* head)`,这允许函数直接修改传入链表的结构,而不是复制整个链表。 这个C语言的通讯录程序是一个典型的面向结构化的编程实例,它结合了数据结构、文件操作和控制流程,为学习C语言的初学者提供了很好的实践平台。