2.29IO进程线程

 编写链表,链表里面随便搞点数据 使用 fprintf 将链表中所有的数据,保存到文件中 使用 fscanf 读取文件中的数据,写入链表中

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>typedef struct link_list
{int data;struct link_list *next;
}lis,*linkp;linkp create_head()
{linkp L = (linkp)malloc(sizeof(lis));if(L==NULL){printf("空间申请失败\n");return NULL;}L->next=NULL;return L;
}
linkp create_node(int data)
{linkp new = (linkp)malloc(sizeof(lis));if(new==NULL){printf("空间申请失败\n");return NULL;}new->data = data;return new;
}
void insert_head(linkp H,int data)
{if(H==NULL){printf("入参为空,请检查\n");return;}linkp new = create_node(data);new->next = H->next;H->next = new;
}
void output(linkp H)
{if(H==NULL){printf("入参为空,请检查\n");return;}linkp p = H->next;while(p!=NULL){printf("%d\n",p->data);p = p->next;}
}
int save(linkp H)
{FILE* wfp = fopen("./save.txt","w");linkp t = H->next;if(wfp==NULL)return 1;int n=0;while(t){fprintf(wfp,"%d\n",t->data);t=t->next;n++;}fclose(wfp);return n;
}
linkp reads(linkp H,int n)
{FILE* rfp = fopen("./save.txt","r");linkp t = H->next;if(rfp==NULL)return NULL; linkp p1 = H;int a[n];int i=0;while(n){fscanf(rfp,"%d\n",&a[i]);insert_head(p1,a[i]);n--;i++;}fclose(rfp);return p1;
}
int main(int argc, const char *argv[])
{linkp p = create_head();insert_head(p,12);insert_head(p,34);insert_head(p,56);insert_head(p,78);printf("头插写入链表\n");output(p);int n=save(p);printf("fprintf将数据写入save.txt文件后,fscanf读取文件数据,头插写入链表\n");output(reads(p,n));return 0;
}

思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/500048.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“集世界精华·展中国风采”2024北京智能科技展会(世亚智博会)

在科技的浪潮中&#xff0c;中国犹如一艘乘风破浪的巨轮&#xff0c;稳健地航行在广阔的海洋上。随着科技的飞速发展&#xff0c;中国正逐渐成为全球科技领域的一面旗帜&#xff0c;引领着世界科技潮流。在这个伟大的时代&#xff0c;中国以卓越的科技创新能力和前瞻的战略视野…

vue-electron 项目创建记录及注意事项

vue-electron 项目创建记录及注意事项 1、使用vue ui或者命令行创建vue项目 2、添加electron插件 3、安装element-plus: npm install --save element-plus 4、修改配置文件如下图: vue.config.js增加配置&#xff1a; pluginOptions:{ electronOutput: { contextIsolation…

WiFi模块引领智能家居革命:连接未来的生活

随着科技的快速发展&#xff0c;智能家居正成为现代生活的一部分&#xff0c;极大地改变了我们与家庭环境互动的方式。其中&#xff0c;WiFi模块作为关键的连接技术&#xff0c;在推动智能家居革命中发挥着不可忽视的作用。本文将深入探讨WiFi模块如何驱动智能家居革命。 设备互…

Linux——haproxy搭建Web群集

一、haproxy概述 HAProxy 提供高可用性、负载均衡以及基于TCP和HTTP的应用代理&#xff0c;支持虚拟主机&#xff0c;它是免费、快速并且可靠的一种负载均衡解决方案。适合处理高负载站点的七层数据请求。类似的代理服务可以屏蔽内部真实服务器&#xff0c;防止内部服务器遭受攻…

TVM 和模型优化的概述(1)

文章目录 1. 从 Tensorflow、PyTorch 或 Onnx 等框架导入模型&#xff08;model&#xff09;。2.翻译成 Relay3. lower 到 张量表达式。4. 使用 auto-tuning 模块 AutoTVM 或 AutoScheduler 搜索最佳 schedule。5. 选择最佳配置进行模型编译。6. lower 到 TIR。7. 编译成机器码…

QML中动态增加表格数据

1.QML中的表格实现 import QtQuick 2.15 import QtQuick.Window 2.15import QtQuick.Controls 2.0 import Qt.labs.qmlmodels 1.0 import QtQuick.Layouts 1.15Window {width: 640height: 480visible: truetitle: qsTr("Hello World")TableModel{id:table_modelTabl…

Stable Diffusion 模型分享:Henmix_Real(人像、真实、写真、亚洲面孔)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 作者述&#xff1a;这个模型试图改变&#xff0c;以便西方人和亚洲人都能够表达得很好。此…

认识通讯协议——TCP/IP、UDP协议的区别,HTTP通讯协议的理解

目录 引出认识通讯协议1、TCP/IP协议&#xff0c;UDP协议的区别2、HTTP通讯协议的讲解 Redis冲冲冲——缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 认识通讯协议——TCP/IP、UDP协议的区别&#xff0c;HTTP通讯协议的理解 认识通讯协议 …

适用Java SpringBoot项目的分布式锁

在分布式系统中&#xff0c;常用到分布式锁&#xff0c;它有多中实现方式&#xff0c;如&#xff1a;基于redis&#xff0c;database&#xff0c;zookeeper等。Spring integration组件有这三种服务的分布式锁实现&#xff0c;今天来看看用的比较多的redis和database实现方式。 …

Element ui plus 中 table scroll 自动触底

Element ui plus 中 table scroll 自动触底 场景&#xff1a;添加客户等级的时候&#xff0c;新增的客户等级 input 框 被 scroll 遮挡、重叠&#xff0c;需要保证 scroll 保持在 最底部接可以解决 遮挡、重叠。 el-table 在设置了 height 后&#xff0c;会选择将 table 表头固…

自动采集API壁纸系统源码自适应手机端

HTML5响应式自动采集API壁纸系统源码自适应手机端 瀑布流加载 源码下载&#xff1a;https://www.qqmu.com/2303.html

果园预售系统|基于Springboot的果园预售系统设计与实现(源码+数据库+文档)

果园预售系统目录 目录 基于Springboot的果园预售系统设计与实现 一、前言 二、系统功能设计 三、系统功能设计 1 、果园管理 2、水果管理 3、果树管理 4、公告管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…