简单的一个代码
- 想要实现c语言数据从链表写入到文件和从文件读取到链表这个功能必须
- 先得了解一些关于文件操作的一些函数
- fopen() fclose() fprintf() fscanf() fread() fwrite()
这些都会再我的另外一篇博客中提到 - 这个代码仅仅是一个示例,重要为了实现上面的功能
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct W {
int data;
struct W* next;
}W;
W* add(W*h) {//创建一个链表,并返回头节点
h = (W*)malloc(sizeof(W));
W* p, * q;
p = h;
for (int i = 0;i < 2;i++) {
q = (W*)malloc(sizeof(W));
printf("加数\n");
q->data = i;
p->next = q;//尾插法核心三步
q->next = NULL;
p = q;
}
printf("结束\n");
return h;
}
void save(W* h) {//创建并将链表信息存入文件
FILE* fp;
W* p = h->next;
if ((fp = fopen("D://www.txt", "w+")) == NULL) {
printf("打开失败");
exit(-1);
}
else
{
printf("打开save成功\n");
}
for (int i = 0;i < 2;i++) {
fprintf(fp, "%d\n", p->data);
p = p->next;
}
printf("成功\n");
fclose(fp);
}
void load() {//打开并读取文件内容并显示
FILE* fp;
int n=2;
if (fp == fopen("D://www.txt", "r") == NULL) {
printf("打开失败");
exit(-1);
}
else{
printf("load成功\n");
}
W* h1, * p1, * q1;
h1 = (W*)malloc(sizeof(W));
p1 = h1;
while(n) {
q1 = (W*)malloc(sizeof(W));
fscanf(fp, "%d\n", &q1->data);
printf("%d", q1->data);
p1->next = q1;//尾插
q1->next = NULL;
p1 = q1;
n--;
}
printf("load结束");
fclose(fp);
}
int main() {
W* h;
h= add(h);
save(h);
load();
return 0;
}
dev运行结果
成功创建并存入文件