c语言链表如何保存文件
时间: 2023-08-10 16:16:52 浏览: 214
在C语言中,我们可以通过文件操作函数来将链表保存到文件中。具体的实现方式如下:
1. 打开文件
我们使用fopen函数打开文件,如果打开文件成功,则会返回一个文件指针,否则返回NULL。在打开文件时,需要指定文件名和打开方式。如果是写入模式,则使用"w"或"w+"打开文件;如果是追加模式,则使用"a"或"a+"打开文件。
```c
FILE* fp;
fp = fopen("data.txt", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
```
2. 将链表数据写入文件
我们通过遍历链表,将每个节点的数据写入文件中。在写入文件时,可以使用fprintf函数将数据按指定格式输出到文件中。
```c
// 遍历链表,将每个节点的数据写入文件
Node* p = head;
while (p != NULL) {
fprintf(fp, "%d %s\n", p->id, p->name);
p = p->next;
}
```
3. 关闭文件
当我们完成文件操作后,需要使用fclose函数关闭文件,释放文件指针所占用的资源。
```c
fclose(fp);
```
完整示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node {
int id;
char name[20];
struct Node* next;
} Node;
int main() {
// 创建链表
Node* head = NULL;
Node* tail = NULL;
for (int i = 1; i <= 5; i++) {
Node* node = (Node*)malloc(sizeof(Node));
node->id = i;
sprintf(node->name, "name%d", i);
node->next = NULL;
if (head == NULL) {
head = node;
} else {
tail->next = node;
}
tail = node;
}
// 打开文件
FILE* fp;
fp = fopen("data.txt", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return 0;
}
// 遍历链表,将每个节点的数据写入文件
Node* p = head;
while (p != NULL) {
fprintf(fp, "%d %s\n", p->id, p->name);
p = p->next;
}
// 关闭文件
fclose(fp);
// 释放链表占用的内存
p = head;
while (p != NULL) {
Node* next = p->next;
free(p);
p = next;
}
return 0;
}
```
在上面的示例代码中,我们创建了一个包含5个节点的链表,并将链表数据保存到了名为"data.txt"的文件中。在保存数据时,我们使用fprintf函数将每个节点的id和name输出到文件中。最后,我们释放链表所占用的内存,并关闭文件。
阅读全文