c语言利用子函数保存链表文件
时间: 2023-08-10 12:16:52 浏览: 122
可以将保存链表到文件的操作封装成一个子函数,以便在程序中重复利用。下面是一个示例代码,演示如何利用子函数将链表保存到文件中:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node {
int id;
char name[20];
struct Node* next;
} Node;
// 将链表保存到文件中
int saveListToFile(Node* head, const char* fileName) {
// 打开文件
FILE* fp;
fp = fopen(fileName, "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);
return 1;
}
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;
}
// 保存链表到文件中
int result = saveListToFile(head, "data.txt");
if (result) {
printf("链表保存成功!\n");
} else {
printf("链表保存失败!\n");
}
// 释放链表占用的内存
Node* p = head;
while (p != NULL) {
Node* next = p->next;
free(p);
p = next;
}
return 0;
}
```
在上面的示例代码中,我们将保存链表到文件的操作封装成了一个名为saveListToFile的子函数。该函数接受两个参数,分别为链表头指针和文件名。在函数内部,我们使用fopen函数打开文件,然后遍历链表,将每个节点的数据输出到文件中。最后,我们使用fclose函数关闭文件,并返回1表示操作成功。在主函数中,我们先创建了一个包含5个节点的链表,然后调用saveListToFile函数将链表保存到名为"data.txt"的文件中。最后,我们释放链表所占用的内存。
阅读全文