索引文件的建立与查询示例(六)

在上一节,我们将链表写入了文件,共写入5个节点的数据,小计80字节。在这一节,我们试着读取文件中的内容,看是否能展示至屏幕上。


//按块大小进行读取,定义头结点的大小void readfromFile(const char *filename){
FILE *file=fopen(filename,"r");
if(!file)
{perror ("Error opening the file.");exit(-1);
}
Node *current;//因为链表头是空内容;
current=(Node *)malloc(sizeof(Node));//分配空间printf("file is found\n");printf("file name %s is found\n",filename);fseek(file, 0L, SEEK_END); // 将文件指针移动到文件尾部long filesize = ftell(file);   // 获取文件指针相对于起始位置的偏移量printf("当前预读取的文件大小为 %ld 字节\n", filesize);//按块大小进行读取fseek(file, 0L, SEEK_SET); // 将文件指针移回到文件头部filesize = ftell(file);   // 获取文件指针相对于起始位置的偏移量printf("当前读取的文件位置为 %ld 字节\n", filesize);while(!feof(file))
{filesize = ftell(file);   // 获取文件指针相对于起始位置的偏移量printf("----------------------------------------------\n");printf("读取前的文件位置为第 %ld 字节\n", filesize);printf("读取的块大小为%d 字节\n", sizeof(Node));printf("预计读取出块大小为%d 字节存入内存中的大小是%d\n", sizeof(Node),sizeof(*current));printf("开始读取块,输出块中数据\n");fread(current,sizeof(Node),1,file);printf("当前块数据是:%d\n",current->data);filesize = ftell(file);   // 获取文件指针相对于起始位置的偏移量printf("读取后的文件位置为第 %ld 字节\n", filesize);}fclose(file);}

我们来运行程序验证
在这里插入图片描述
可以看出文件中的链表数据节点逐个被读取至内存中,并打印出来。由此可见,链表数据的建立、写入文件、读取文件是利用结构体指针实现,在文件中顺序写入并读取出来。

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

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

相关文章

Flink面试准备

零. 主要内容 一. Flink 提交 1. Flink怎么提交? Local模式 JobManager 和 TaskManager 共用一个 JVM,只需要jdk支持,单节点运行,主要用来调试。 Standlone模式 Standlone 是Flink自带的一个分布式集群,它不依赖其他的资源调度框架、不依赖y…

计算机网络-差错控制(纠错编码 海明码 纠错方法)

文章目录 纠错编码-海明码海明距离1.确定校验码位数r2.确定校验码和数据的位置3.求出校验码的值4.检错并纠错纠错方法1纠错方法2 小结 纠错编码-海明码 奇偶校验码:只能发现错误不能找到错误位置和纠正错误 海明距离 如果找到码距为1,那肯定为1了&…

centos 7.6 安装 openldap 2.5.17

centos 7.6 安装ldap 1、下载ldap2、安装ldap2.1、官方参考文档2.2、安装前准备2.2.1、安装gcc2.2.2、安装Cyrus SASL 2.1.272.2.3、安装OpenSSL 1.1.12.2.3.1、下载openssl 3.02.2.3.2、安装依赖包2.2.3.3、编译安装openssl 3.0 2.2.3、安装libevent 2.1.82.2.4、安装libargon…

MySQL组复制的介绍

前言 本文介绍关于MySQL组复制的背景信息和基本原理。包括,介绍MySQL传统复制方法的原理和隐患、介绍组复制的原理,单主模式和多主模式等等。通过结合原理图学习这些概念,可以很好的帮助我们理解组复制技术这一MySQL高可用方案,有…

私有化部署跳一跳

目录 效果 安装 1.安装httpd 2.下载跳一跳 3.启动httpd 使用 效果 安装 1.安装httpd yum -y install httpd systemctl enable httpd 2.下载跳一跳 cd /var/www/html/ git clone https://gitee.com/WangZhe168_admin/jump.git 3.启动httpd systemctl start httpd 使…

VS编译器对scanf函数不安全报错的解决办法(详细步骤)

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有…

【lesson41】理解文件系统(2)

文章目录 理解文件系统 理解文件系统 我们之前学过,一个文件可以有多个datablock块,但是如果这个文件太大了怎么办?datablock中,不是所有的datablock只能存文件数据,也可以存其它块的块号。 inode Vs 文件名 找到文件…

Elasticsearch:基本 CRUD 操作 - Python

在我之前的文章 “Elasticsearch:关于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x”,我详细讲述了如何建立 Elasticsearch 的客户端连接。我们也详述了如何对数据的写入及一些基本操作。在今天的文章中,我们针对数据的 CRUD (cre…

2024.2.5 vscode连不上虚拟机,始终waiting for server log

昨天还好好的,吃着火锅,做着毕设,突然就被vscode给劫了。 起初,哥们跟着网上教程有模有样地删除了安装包缓存,还删除了.vscode-server,发现没卵用,之前都是搜那个弹窗报错。 后来发现原来是vsco…

在Python中执行Linux Shell脚本详解

概要 随着 Python 的增长和普及,目前它已经成为自动化各种任务,包括执行 shell 脚本的主要工具。这篇文章将详细描述如何在 Python 中执行 shell 脚本,并提供丰富的示例帮助你理解和实践。 什么是Shell脚本? Shell脚本是一个由命令行解释器执行的文本文件。这些脚本包含控…

Python学习路线 - Python语言基础入门 - 面向对象

Python学习路线 - Python语言基础入门 - 面向对象 初识对象生活中数据的组织程序中数据的组织使用对象组织数据 成员方法类的定义和使用成员变量和成员方法成员方法的定义语法注意事项 类和对象现实世界的事物和类类和对象在程序中通过类来描述基于类创建对象 构造方法属性(成员…

大学网课线上考试答案查找? #其他#媒体#学习方法

在现代科技的帮助下,大学生们有幸能够利用各种日常学习工具来提升自己的学习效果。 1.千鸟搜题 这是一个公众号 支持文字和语音查题!!! 学习通,知到,mooc等等平台的网课题目答案都可以查询! 下方附上一些测试的试题及答案 1、下列往复泵中流量最均匀的是&#x…