当前位置:实例文章 » 其他实例» [文章]C语言进阶之文件操作及改造通讯录

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语言中的文件操作功能,并且能够使用它们来改造自己的程序。

相关标签:
其他信息

其他资源

Top