【C语言】_文件内容操作:随机读写

目录

1. fseek

1.1  随机读文件

1.2  随机写文件

2. ftell

3. rewind


当以读方式打开一个存在且存有内容的文件时,文件指针会默认指向第一个元素。以在test4.txt文件中存储abcdef为例:

int main()
{//打开文件FILE* pf = fopen("E:\\C_文件操作\\C_文件操作\\test4.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读文件int ch = fgetc(pf);printf("%c\n", ch);//关闭文件fclose(pf);pf = NULL;return 0;
}

此时会打印文件的第一个元素a:

为了实现文件的随机读写,介绍一下三个函数: 

1. fseek

fseek函数根据文件指针的位置和偏移量来定位文件指针

1.1  随机读文件

int main()
{//打开文件FILE* pf = fopen("E:\\C_文件操作\\C_文件操作\\test4.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读文件int ch = fgetc(pf);  //aprintf("%c\n", ch);ch = fgetc(pf);  //bprintf("%c\n", ch);//此时文件指针已定位在c的位置fseek(pf, 2, SEEK_CUR);ch = fgetc(pf);   //eprintf("%c\n", ch);fseek(pf,-2,SEEK_END);ch = fgetc(pf);   //fprintf("%c\n", ch);fseek(pf, 6, SEEK_SET);ch = fgetc(pf);   //gprintf("%c\n", ch);//关闭文件fclose(pf);pf = NULL;return 0;
}

 输出结果为:

1.2  随机写文件

int main()
{//打开文件FILE* pf = fopen("E:\\C_文件操作\\C_文件操作\\test5.txt", "w");if (pf == NULL){perror("fopen");return 1;}//随机写文件fputc('a', pf);fputc('b', pf);fputc('c', pf);fputc('d', pf);fseek(pf, -3, SEEK_CUR);fputc('w', pf);//关闭文件fclose(pf);pf = NULL;return 0;
}

输出结果为:

注意只能修改不能插入;

2. ftell

返回文件指针相对于起始位置的偏移量

int main()
{//打开文件FILE* pf = fopen("E:\\C_文件操作\\C_文件操作\\test5.txt", "w");if (pf == NULL){perror("fopen");return 1;}//随机写文件fputc('a', pf);fputc('b', pf);fputc('c', pf);fputc('d', pf);fseek(pf, -3, SEEK_CUR);fputc('w', pf);long pos = ftell(pf);printf("%ld\n", pos);//关闭文件fclose(pf);pf = NULL;return 0;
}

输出结果为:

3. rewind

让文件指针位置回到文件起始位置

int main()
{//打开文件FILE* pf = fopen("E:\\C_文件操作\\C_文件操作\\test5.txt", "w");if (pf == NULL){perror("fopen");return 1;}//随机写文件fputc('a', pf);fputc('b', pf);fputc('c', pf);fputc('d', pf);fseek(pf, -3, SEEK_CUR);fputc('w', pf);rewind(pf);long pos = ftell(pf);printf("%ld\n", pos);//关闭文件fclose(pf);pf = NULL;return 0;
}

 输出结果为:

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

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

相关文章

Ubuntu22.04中基于Qt开发Android App

文章目录 前言在Ubuntu22.04中配置开发环境案例测试参考 前言 使用Qt开发手机应用程序是一种高效且灵活的选择。Qt作为一个跨平台的开发框架,为开发者提供了统一的开发体验和丰富的功能库。首先,Qt的跨平台性让开发者可以使用相同的代码库在不同的操作系…

后端开发框架Spring Boot快速入门

写在前面 推荐将本文与Spring Boot 相关知识和工具类一文结合起来看,本文为主,上面那篇文章为辅,一起食用,以达到最佳效果,当然,大佬随意。 IDEA创建Spring Boot工程 关于Spring Boot框架项目&#xff0…

Tuxera2023 NTFS for Mac下载,安装和序列号激活

对于必须在Windows电脑和Mac电脑之间来回切换的Mac朋友来说,跨平台不兼容一直是一个巨大的障碍,尤其是当我们需要使用NTFS格式的硬盘在Windows和macOS之间共享文件时。因为Mac默认不支持写入NTFS磁盘。 为了解决这一问题,很多朋友会选择很便捷…

SpamSieve mac垃圾邮件过滤器 直装激活版

SpamSieve通过强大的垃圾邮件过滤技术,帮助用户有效管理和消除不想要的电子邮件。它能与多种电子邮件客户端无缝集成,如Apple Mail、Microsoft Outlook、Airmail等。 软件下载:SpamSieve mac直装激活版下载 该软件利用先进的算法和机器学习技…

二.音视频编辑-媒体组合-播放

引言 当涉及到音视频编辑时,媒体资源的提取和组合是至关重要的环节。在iOS平台上,AVFoundation框架提供了丰富而强大的功能,使得媒体资源的操作变得轻松而高效。从原始的媒体中提取片段,然后将它们巧妙地组合成一个完整的作品&am…

dell灵越5439升级记录(2024年4月5日)

1、内存 5439为单个内存插槽,网上那些写两个的都是乱写的,型号是ddr3L。原来是4G,换成国产全新三星颗粒寨条,8g 1600hz。 淘宝价:47元。 2、CPU和显卡 如果和我一样在系统里面找不到GT740M的独显,那这一步…

PC版复古珠宝饰品网站模板 基于pbootcms的首饰类源码下载

PbootCMS复古珠宝饰品网站模板:PCWAP双端同步,数据即时共享,轻松打造专业饰品首饰平台 本模板基于PbootCMS内核开发,专为饰品首饰网站、复古珠宝饰品网站等企业量身定制。同时,其他行业同样适用,只需替换文…

160 Linux C++ 通讯架构实战14,epoll 反应堆模型

到这里,我们需要整理一下之前学习的epoll模型,并根据之前的epoll模型,提出弊端,进而整理epoll反应堆模型,进一步深刻理解,这是因为epoll实在是太重要了。 复习之前的epoll的整体流程以及思路。 参考之前写…

环信IM集成教程——Web端UIKit快速集成与消息发送

写在前面: 千呼万唤始出来,环信Web端终于出UIKit了!🎉🎉🎉 文档地址:https://doc.easemob.com/uikit/chatuikit/web/chatuikit_overview.html 环信单群聊 UIKit 是基于环信即时通讯云 IM SDK 开…

JAVA毕业设计132—基于Java+Springboot+Vue的自习室座位预约小程序管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的自习室座位预约小程序管理系统(源代码数据库)132 一、系统介绍 本项目前后端分离带小程序,分为管理员、用户两种角色 1、用户: 注…

echart 仪表盘实现指针的渐变色及添加图片

需求: 在仪表盘中设置指针为渐变色,并在仪表盘中间添加图片。 实现重点: 1、仪表盘指针渐变色的实现 渐变色通过设置pointer的itemStyle属性内的color实现,重点是echart版本,这个原本使用4.8.0的版本不起作用&#xff…

利用nginx-http-flv-module实现三种直播

目录 一、说明 二、目标 三、实现 四、直播地址 一、说明 此文在《流媒体服务器的搭建(支持hls)》《搭建nginx-http-flv-module直播系统》之后编写,很多详细内容需要参考它。 流媒体服务器的搭建(支持hls)

MongoDB 启动异常

Failed to start up WiredTiger under any compatibility version. 解决方案: 删除WiredTiger.lock 和 mongod.lock两个文件,在重新启动。回重新生成新的文件。

Kotlin学习日志(一)TextView、Button、Toast的使用(1)

android:layout_width“wrap_content” android:layout_height“wrap_content”/> import kotlinx.android.synthetic.main.activity_main.* 这句话的意思是引进Kotlin的的控件变量自动映射功能,接下来只要是这个activity_main.xml文件中的控件,我…

汽车网络安全管理

汽车网络安全管理 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事&#xff0c…

SpringBoot快速入门笔记(4)

文章目录 一、Vue框架1、前端环境准备2、简介3、快速开始4、事件绑定 二、Vue组件化开发1、NPM2、Vue Cli3、组件化开发4、SayHello自定义组件5、Movie自定义组件 一、Vue框架 1、前端环境准备 编码工具:VSCode 依赖管理:NPM 项目构建:VueCl…

(ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类

文章目录 相关论文摘要引言类别嵌入局限性——问题1普通ZSL模型局限性——问题2自动属性注释过程——对应问题1深度语义-视觉对齐(DSVA)模型——对应问题2 基于遥感多模态相似性的自动属性标注属性词汇表构造使用CLIP模型自动标注属性对CLIP模型进行训练…

【Arthas案例】某应用依赖两个GAV-classifier不同的snakeyaml.jar,引起NoSuchMethodError

多个不同的GAV-classifier依赖冲突,引起NoSuchMethodError Maven依赖的三坐标体系GAV(G-groupId,A-artifactId,V-version) classifier通常用于区分从同一POM构建的具有不同内容的构件物(artifact)。它是可选的&#xf…

51之矩阵键盘

目录 1.矩阵键盘简介 2.获取矩阵键盘键码值 3.矩阵键盘实现密码锁 1.矩阵键盘简介 矩阵键盘就是一个基于独立按键的Plus版本,它的原理图就是下面这样: 和独立按键就像表兄弟一样,为什么这么说呢?因为这个矩阵键盘上可以找到很多…

java——文件上传

一、文件上传——简介 文件上传的简介:文件上传是指将本地计算机中的文件传输到网络上的服务器或另一台计算机上的过程。在 Web 开发中,文件上传通常指的是将用户通过 Web 页面提交的文件(如图像、文档、音频、视频等)传输到服务器…