了解文件的随机读写,文件类别、文件缓冲区,文件操作知识点补充(接上文)

2023-11-07

文件的操作

老规矩笔记自取~:文件操作进阶笔记
❤️欢迎喜欢学习C/C++的朋友互关一起努力!!❤️


一、文件的随机读写

1. fseek 定位文件指针函数

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

改变原文件指针指向的位置

int fseek( FILE *stream, long offset, int origin );

参数:文件地址,偏移量,起始位置

这里的起始位置分为

SEEK_CUR 当前位置

Current position of file pointer

SEEK_END 文件字符的末位(最后一个字符的下个位置)

End of file

SEEK_SET 文件起始位置(第一个字符的起始位)

Beginning of file

偏移量右正左负

返回值:成功返回,0

用一段代码感受:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()
{
	//FILE* fp = fopen("C:\\Users\\yujing wang\\Desktop\\test.txt", "w");//写入
	FILE* fp = fopen("C:\\Users\\yujing wang\\Desktop\\test.txt", "r");//读取

	if (fp == NULL)
	{
		perror("fopen");
		return -1;
	}

	//fputs("abcde", fp);//写入abc
	fseek(fp, 1, SEEK_SET);//第二个字符
	printf("%c", fgetc(fp));

	fseek(fp, 0, SEEK_CUR);//与上面一样
	printf("%c", fgetc(fp));

	fseek(fp, -1, SEEK_END);//最后一个字符
	printf("%c", fgetc(fp));


	fclose(fp);
	fp = NULL;

	return 0;
}

运行结果和想象的一样

在这里插入图片描述


2. ftell 当前偏移量函数

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

方便我们知道现在文件指针指向哪个位置

long int ftell ( FILE * stream );

参数:文件地址

返回值:偏移量

还是一段代码搞起~

#include <stdio.h>
#include <stdlib.h>

int main()
{
	FILE* fp = fopen("C:\\Users\\yujing wang\\Desktop\\test.txt", "r");//读取

	if (fp == NULL)
	{
		perror("fopen");
		return -1;
	}

	fseek(fp, 1, SEEK_SET);//指向第二个字符
	printf("%ld", ftell(fp));


	fclose(fp);
	fp = NULL;

	return 0;
}

结果符合我们的猜想

在这里插入图片描述


3. rewind 返回起始位置函数

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

void rewind ( FILE * stream );

参数:文件地址

返回值:NULL


把刚才的代码再加一行

int main()
{
	FILE* fp = fopen("C:\\Users\\yujing wang\\Desktop\\test.txt", "r");//读取

	if (fp == NULL)
	{
		perror("fopen");
		return -1;
	}

	fseek(fp, 1, SEEK_SET);//指向第二个字符
	rewind(fp);
	printf("%ld", ftell(fp));


	fclose(fp);
	fp = NULL;

	return 0;
}

运行结果

在这里插入图片描述

偏移量变为0了


二、文本文件和二进制文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解文件的随机读写,文件类别、文件缓冲区,文件操作知识点补充(接上文) 的相关文章

  • gre 填空78-89

    section 78 median 1 Kinetic dynamic energizing Immutable not capable of or susceptible to change 2 It is often argued th
  • idea build 报错,maven install 正常运行

    pom中引的包 代码写的时候也有提示 写完也不报错 build 或者 run 或者 debug 启动就报错 提示程序包xxx无法找到 原来是idea 自身的问题 首先执行maven 命令 mvn idea idea 再点击idea的菜单fi
  • 被包围的棋子 Surrounded Regions

    问题 Given a 2D board containing X and O capture all regions surrounded by X A region is captured by flipping all O s into
  • 浅谈MVC(jsp+servlet+JavaBean简单实例)

    MVC Model View Controller 旨在分离模型 控制 视图 是一种分层思想的体现 项目实例 购物车商品管理 总体设计 1实现DBHelper类 2创建实体类 3创建业务逻辑类 DAO 4创建控制层 5创建页面层 1数据库连

随机推荐

  • Android面试回忆录:Service有几种启动方式?,android开发工程师

    如果需要做耗时的操作 你会怎么做 问题便这样展开了 一个人是否真正懂得原理会灵活运用 一下子便能看出来 当面试者回答到线程和Handler方式时 我会再问一下对方 是否知道IntentService 在什么场景下使用IntentServic
  • 文件操作之文件下载、文件读取

    本文章仅做学习交流 如有违法行为 上传者自行负责 原理 原理案例 检测 怎么寻找文件下载漏洞 利用方面 文件目录的获取分两种 文件类型 常见文件 敏感文件 实际案例演示 Javaweb文件下载代码 当贝市场 通过功能点找到漏洞 RoarCT
  • win10下使用mmdet训练自己的数据模型

    win10下使用mmdet训练自己的数据模型 1 环境配置 2 制作自己的coco数据集 3 进行训练 4 计算测试图像的交并比 参考文献 1 环境配置 1 查看自己cuda版本 2 查看自己python版本 3 安装pytorch 官方地
  • 项目实训(树莓派)(七)树莓派4B下的ubuntu系统下命令行的使用-磁盘管理部分

    目录 前言 实验目的 实验内容 实验环境 实验步骤 1 df命令 2 fdisk命令 磁盘分区 3 hdparm命令 显示与设定硬盘参数 4 lsblk命令 查看系统的磁盘 5 vgextend命令 扩展卷组 前言 通过前面的实验 我们已经
  • 【MySQL笔记】正确的理解MySQL的MVCC及实现原理

    MVCC多版本并发控制 如果觉得对你有帮助 能否点个赞或关个注 以示鼓励笔者呢 博客目录 先点这里 首先声明 MySQL 的测试环境是 5 7 前提概要 什么是 MVCC 什么是当前读和快照读 当前读 快照读和 MVCC 的关系 MVCC
  • 数字水印技术

    数字水印技术在信息安全中属于数字版权保护方面的技术 数字水印通过嵌入或附加数字信息到数字媒体中 可以追踪和证明数字媒体的来源 版权 真伪等 数字水印可以被用于防止盗版 保护知识产权 证明数字证据的真实性等应用场景 从而保障信息安全和维护合法
  • jQuery学习

    1 jQuery概述 1 1 JavaScript 库 JavaScript 库 即library 是一个封装好的特定的集合 方法和函数 从封装一大堆函数的角度理解库 就是在这个库中 封装了很多预先定义好的函数在里面 比如动画animate
  • BAJT 中高级 Java 面试题答案

    1 请问你做过哪些JVM优化 使用什么方法达到什么效果 vm调优主要也就是内存空间的分配 最终策略 提高系统性能 主要策略有 1 增加eden空间 让更多的对象留在年轻代 2 大对象直接放到老年代 以免扰乱年轻代高频率的gc XX Pete
  • 怎么查找电脑中的流氓软件_1个神器彻底删除流氓软件,瞬间清出十几个G,你的电脑有救了!...

    在使用电脑中 我们总会遇到一些流氓软件 不仅严重拖慢了电脑的运行速度 还不定时地弹出一个又一个的 定时炸弹 毋庸置疑 这些定时炸弹就是各种烦人的广告和弹窗了 尽管我们通过常规的方式把它卸载 但它还会卷土重来 那么对于那些卸载了仍会有文件残留
  • SpringCloud:SpringCloud生态的组成,组件的介绍(一)

    springCloud官方文档 https www springcloud cc 中文网 https spring io projects spring cloud 官方网 SpringCloud是什么 Spring Cloud是一个基于S
  • 一文读懂:区块链中的Merkle树

    我们知道 区块链中每个区块包括区块头和区块体两部分 个人技术公众号 解决方案工程师 欢迎同领域的朋友关注 相互交流 像在CSDN一样 分享技术 分享代码 分享方案文档 分享白皮书 区块体中包含了由区块链系统产生的一系列交易数据 并以Merk
  • SLAM入门

    SLAM定义 SLAM Simultaneous localization and mapping 同时定位 我在哪里 与建图 我周围有什么 当某种移动设备 汽车 扫地机 手机 无人机 机器人 从一个未知环境的未知地点出发 在运动过程中 通
  • P27 多表查询的分类:非等值连接、自连接、内、外连接

    3 多表查询的分类 7 多表查询的分类 角度1 等值连接 vs 非等值连接 角度2 自连接 vs 非自连接 角度3 内连接 vs 外连接 等值连接 vs 非等值连接 SELECT FROM job grades 非等值连接 薪资是在一个范围
  • airpods固件更新方法_AirPods2/AirPods Pro新固件怎么升级 固件更新方法

    17日上午 苹果公司发布了针对 AirPods 2 和 AirPods Pro 两款无线耳机的的固件更新 不过目前官方并未说明此次更新的具体改进 AirPods Pro 是苹果 10 月底推出的新品 支持主动降噪功能 在今天之前 它的固件版
  • MySQL数据库基本概念介绍

    MySQL数据库 一 数据库的简介 1 数据 Data 2 表 3 数据库 二 数据库的概念 1 数据库管理系统 DBMS 2 数据库系统 三 数据库的发展史 1 第一代数据库 2 第二代数据库 3 第三代数据库 四 当前主流数据库介绍 1
  • 搜索引擎solr系列---与java的springboot项目连接配置

    java与solr连接 调用查询的方式 我知道的有两种 solrj方式 这种方式写法较麻烦 倒不是因为难 就是简单的逻辑 有时候为了一个业务写一堆代码 所以solrj的这种方式还是比较灵活的 能实现你需要的变态业务需求 我发现它的一个小缺点
  • SpringBoot 3.x整合Fluent Mybatis极简流程

    此为基础配置 不包括其他高级配置 需要其他高级配置请查阅官方文档 fluent mybatis特性总览 Wiki Gitee com https gitee com fluent mybatis fluent mybatis wikis f
  • 软件测试学习路线

    下图是某培训机构的课程概要 同样的 我们学习的路线基本如此 下面主要总结一下 注意 因为自身原因 所以我的方案是自己的自学方案 仅作参考 1 测试基础知识 一些测试必备文档以及概念要掌握 这是最基本的 1 gt 测试分类 按测试技术划分为
  • 实验吧——加了料的报错注入

    coding utf8 import requests import re def denglu username password 设置代理 用于调试过程中抓包分析 proxies http http localhost 9008 htt
  • 了解文件的随机读写,文件类别、文件缓冲区,文件操作知识点补充(接上文)

    文件的操作 老规矩笔记自取 文件操作进阶笔记 欢迎喜欢学习C C 的朋友互关一起努力 文章目录 文件的操作 一 文件的随机读写 1 fseek 定位文件指针函数 2 ftell 当前偏移量函数 3 rewind 返回起始位置函数 二 文本文