c语言数据从链表写入到文件和从文件读取到链表

简单的一个代码

  • 想要实现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运行结果
代码运行图
成功创建并存入文件
在这里插入图片描述

发布了21 篇原创文章 · 获赞 5 · 访问量 736

猜你喜欢

转载自blog.csdn.net/weixin_45862170/article/details/104565454