【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.mzph.cn/news/794966.shtml

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

相关文章

关系型数据库与非关系型数据库、Redis数据库

相比于其他的内存/缓存数据库,redis可以方便的实现持久化的功能(保存至磁盘中) 一、关系数据库与非关系型数据库 1.1 关系型数据库 一个结构化的数据库,创建在关系模型基础上一般面向于记录 SQL语句 (标准数据查询语言) 就是一种…

C语言中不常用到的一些函数

basename 功能:basename() 函数用于获取路径中的文件名部分,即去除路径中的目录部分。 函数原型: char *basename(char *path); 参数说明: path: 指向以null结尾的字符串,表示文件路径。 用法示例: …

LNMP环境:揭秘负载均衡与高可用性设计

lb1: 192.168.8.5 lb2: 192.168.8.6 web1:192.168.8.7 web2:192.168.8.8 php-fpm: 192.168.8.9 mysql: 192.168.8.10 nfs:192.168.8.11 分别插入镜像 8.5-8.8 分别安装nginx,并设置启动 8.9 安装php 8.10 安装mysql 先配置一台web服务器然后同步 设置网站根目录 cp -…

蛮力算法与凸包蛮力算法的深入探究

一、引言 在计算机科学中,算法是解决问题的核心。蛮力算法(Brute Force Algorithm)是众多算法中的一种,它采取最直接的方式来解决问题,不进行任何优化。尽管这种方法的效率可能不高,但在某些情况下&#x…

静态路由协议

路由器工作原理 当数据包进入路由器后,路由器基于数据包中的目标IP地址,查询本地的路由表;若表中存在记录则无条件按照记录转发,若没有记录将丢弃。 默认路由器仅存在直连网段路由,非直连网段被称为未知网段。 路由器…

深入解析二叉树:理论与实践的完美结合

二叉树作为数据结构的核心,不仅在算法设计中占有重要位置,而且在互联网公司的面试中频繁出现。通过本文的学习,你将能够深入理解二叉树的概念、掌握其实现方式,并能应用于实际问题解决。 深入解析二叉树:理论与实践的完美结合 1. 二叉树的基础知识定义二叉树节点2. 二叉树…

【00】【solidity最新教程】-简介

Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。 Solidity 是静态类型语言,支持继承、库和复杂的用…

安卓手机APP开发的安卓工作台的简介

安卓手机APP开发的安卓工作台的简介 目录 概述 项目结构 Gradle的构建系统 构建变体 多APK支持 资源的废弃回收 管理依赖 调试与性能分析工具 内联调试 性能分析工具 堆转存

java -网络编程socket-聊天室-02

完整版代码 java -聊天室的代码: 用于存放聊天室的项目的代码和思路导图https://gitee.com/to-uphold-justice-for-others/java---code-for-chat-rooms.git 先引入线程的正统解释 线程(Thread)是程序执行流的最小单元。线程是操作系统分配CPU时间片的基…

【数据分析面试】10. 计算平均通勤时间(SQL:timestampdiff() 和datediff()区别)

题目 假设你在Uber工作。rides表包含了关于Uber用户在美国各地的行程信息。 编写一个查询,以获取纽约(NY)每位通勤者的平均通勤时间(以分钟为单位),以及纽约所有通勤者的平均通勤时间(以分钟为…

vue广告悬浮框,页面来回移动,鼠标放上停止,离开移动

1.dom <div class"popup-dialog" id"popupDialog" mouseover"onMmouseover" mouseout"onMouseout"><p>vue广告悬浮</p></div>2.js mounted() {this.initPopup();},beforeDestory() {if (this.times) {clearIn…

基于JAX的二阶优化方法的实践

使用协作分支上的算法 git clone https://github.com/linjing-lab/jax.git cd jax git checkout linjing-lab cd examples在命令行预览方法 牛顿方法&#xff1a; cat newton_method.py拟牛顿法&#xff1a; cat bfgs_method.py在命令行运行程序 python newton_method.pyp…

鸡尾酒排序解读

在数据处理的海洋中&#xff0c;排序算法无疑是引领我们探索数据规律的灯塔。今天&#xff0c;我们要探讨的是一种有趣且独特的排序算法——鸡尾酒排序。鸡尾酒排序&#xff0c;也被称为定向冒泡排序、双冒泡排序或搅拌排序&#xff0c;是冒泡排序的一种变体&#xff0c;它通过…

了解强化学习算法 PPO

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 介绍&#xff1a; PPO 算法&#xff0c;即 Proximal Policy Optimization&#xff08;近端策略优化&#xff09;&#xff0c;是一种强化学习算法。它的主要目的是改进策略梯度方法&#xff0c;使得训练…

【RV1126】Ubuntu22.04下sdk编译问题汇集

对于新版本Ubuntu系统来编译SDK&#xff0c;尤其是buildroot ,是一个巨大考验&#xff0c;发现问题如下&#xff1a; 1. c-stack.c的SIGSTKSZ错误 buildroot 报错&#xff1a;c-stack.c:55:26:error:missing binary operator before token “(“55 在buildroot目录中找到c-s…

flink on yarn

前言 Apache Flink&#xff0c;作为大数据处理领域的璀璨明星&#xff0c;以其独特的流处理和批处理一体化模型&#xff0c;成为众多企业和开发者的首选。它不仅能够在处理无界数据流时展现出卓越的实时性能&#xff0c;还能在有界数据批处理上达到高效稳定的效果。本文将简要…

高校心理咨询预约系统的设计与实现(论文+源码)_kaic

摘 要 随着社会的发展&#xff0c;计算机的优势和普及使得高校心理咨询预约系统的开发成为必需。高校心理咨询预约系统主要是借助计算机&#xff0c;通过对信息进行管理。减少管理员的工作&#xff0c;同时也方便广大用户对个人所需信息的及时查询以及管理&#xff0c;其次是大…

苍穹外卖——项目搭建

一、项目介绍以及环境搭建 1.苍穹外卖项目介绍 1.1项目介绍 本项目&#xff08;苍穹外卖&#xff09;是专门为餐饮企业&#xff08;餐厅、饭店&#xff09;定制的一款软件产品&#xff0c;包括 系统管理后台 和 小程序端应用 两部分。其中系统管理后台主要提供给餐饮企业内部员…

【洛谷 P8655】[蓝桥杯 2017 国 B] 发现环 题解(邻接表+并查集+路径压缩)

[蓝桥杯 2017 国 B] 发现环 题目描述 小明的实验室有 N N N 台电脑&#xff0c;编号 1 ∼ N 1 \sim N 1∼N。原本这 N N N 台电脑之间有 N − 1 N-1 N−1 条数据链接相连&#xff0c;恰好构成一个树形网络。在树形网络上&#xff0c;任意两台电脑之间有唯一的路径相连。 …

ARM架构学习笔记2-汇编

RISC是精简指令集计算机&#xff08;RISC:Reduced Instruction Set Computing&#xff09; ARM汇编概述 一开始&#xff0c;ARM公司发布两类指令集&#xff1a; ① ARM指令集&#xff0c;这是32位的&#xff0c;每条指令占据32位&#xff0c;高效&#xff0c;但是太占空间 2…