C语言进阶之文件操作及改造通讯录
发布人:shili8
发布时间:2024-12-26 14:49
阅读次数:0
**C语言进阶之文件操作及改造通讯录**
在学习C语言的过程中,了解文件操作是非常重要的。文件操作可以让我们将数据存储在硬盘上,使得程序能够持久化,并且可以方便地读取和修改这些数据。
本文将介绍如何使用C语言进行文件操作,以及如何改造通讯录程序来利用文件操作功能。
**1. 文件操作的基本概念**
在C语言中,文件操作涉及到以下几个方面:
* **打开文件**: 使用`fopen()`函数打开一个文件。
* **读取文件**: 使用`fgets()、fscanf()`等函数从文件中读取数据。
* **写入文件**: 使用`fprintf()`函数向文件中写入数据。
* **关闭文件**: 使用`fclose()`函数关闭一个文件。
**2. 文件操作的基本函数**
以下是C语言中常用的文件操作函数:
###2.1 `fopen()`
cFILE *fopen(const char *filename, const char *mode);
* `filename`: 要打开的文件名。
* `mode`: 打开方式,例如“r”(只读)、“w”(写入)、“a”(追加)。
###2.2 `fgets()`
cchar *fgets(char *s, int n, FILE *stream);
* `s`: 存储读取的数据。
* `n`: 最多读取的字节数。
* `stream`: 文件流指针。
###2.3 `fscanf()`
cint fscanf(FILE *stream, const char *format, ...);
* `stream`: 文件流指针。
* `format`: 格式字符串。
* `...`: 可变参数,用于读取数据。
###2.4 `fprintf()`
cint fprintf(FILE *stream, const char *format, ...);
* `stream`: 文件流指针。
* `format`: 格式字符串。
* `...`: 可变参数,用于写入数据。
###2.5 `fclose()`
cint fclose(FILE *stream);
* `stream`: 文件流指针。
**3. 通讯录程序的改造**
我们将使用文件操作功能来改造通讯录程序,使得它能够持久化保存联系人信息。
###3.1 通讯录结构
ctypedef struct { char name[50]; int age; char phone[20]; } Contact;
* `name`: 联系人的姓名。
* `age`: 联系人的年龄。
* `phone`: 联系人的电话号码。
###3.2 通讯录函数
cvoid saveContacts(Contact contacts[], int n) { FILE *fp = fopen("contacts.txt", "w"); if (fp == NULL) { printf("Failed to open file! "); return; } for (int i =0; i < n; i++) { fprintf(fp, "%s %d %s ", contacts[i].name, contacts[i].age, contacts[i].phone); } fclose(fp); } void loadContacts(Contact contacts[], int *n) { FILE *fp = fopen("contacts.txt", "r"); if (fp == NULL) { printf("Failed to open file! "); return; } char line[100]; while (fgets(line,100, fp)) { sscanf(line, "%49s %d %19s", contacts[*n].name, &contacts[*n].age, contacts[*n].phone); (*n)++; } fclose(fp); }
* `saveContacts()`: 将联系人信息保存到文件中。
* `loadContacts()`: 从文件中读取联系人信息。
###3.3 主函数
cint main() { Contact contacts[100]; int n =0; loadContacts(contacts, &n); for (int i =0; i < n; i++) { printf("%s %d %s ", contacts[i].name, contacts[i].age, contacts[i].phone); } saveContacts(contacts, n); return0; }
* 主函数中,首先读取联系人信息,然后保存到文件中。
以上就是C语言进阶之文件操作及改造通讯录的内容。通过学习这些知识和示例代码,你将能够更好地掌握C语言中的文件操作功能,并且能够使用它们来改造自己的程序。