当前位置: 首页 > news >正文

文件操作(3)

1.fseek函数和ftell函数

fseek函数的用法

fseek函数用于设置文件流(如文件)的位置指针,根据提供的偏移量和起始位置来调整指针的位置。

其函数声明为:int fseek(FILE *stream, long int offset, int origin);

参数说明:

 stream :指向要操作的文件流的指针。
 offset :表示从起始位置起计算的偏移量,单位是字节。
 origin :指定偏移量的起始位置,常见值如下:
 SEEK_SET :从文件开头偏移(默认)。
 SEEK_CUR :从当前位置偏移。
 SEEK_END :从文件结尾偏移。

以下是一个简单的例子,展示了如何使用fseek函数将文件指针移动到文件开头、当前位置和文件结尾:

int main() {FILE *file = fopen("道德经.txt", "r");if (file == NULL) {printf("无法打开文件!");return 1;}// 移动文件指针到文件开头fseek(file, 0, SEEK_SET);// 移动文件指针到当前位置fseek(file, 0, SEEK_CUR);// 移动文件指针到文件结尾fseek(file, 0, SEEK_END);// 关闭文件fclose(file);return 0;
}

ftell函数用法

 ftell 是C语言中的一个函数,用于获取文件指针当前的位置。

其原型如下:long ftell(FILE *stream);

参数:

 stream :这是一个指向 FILE 对象的指针,该 FILE 对象指定了一个打开的文件。

返回值:

如果成功, ftell 函数返回当前 stream 指向的文件位置,这是一个相对于文件开头的偏移量。
如果失败或发生错误,返回 -1 。

2.ferror函数和feof函数

ferror函数
调用格式 : int ferror(FILE *stream); 
参数 : stream  是指向文件的FILE结构指针。
功能 :
检查上一次对文件流的输入输出操作是否有错误发生。
如果返回值为非零,表示上一次I/O操作失败;

如果为零,表示操作成功。
通常在文件操作如 fread 、 fwrite 、 fgetc 之后调用,以检查操作是否出错。

feof函数
调用格式 : int feof(FILE *stream); 
参数 : stream  同样是指向文件的FILE结构指针。
功能 :
文件读取结束后,判断是否是因为正常到达文件末尾而结束,还是由于其他原因如文件读取错误导致读取终止。

如果文件流已到达文件末尾, feof 返回一个非零值;否则返回0。

区别

关注点不同 :
 ferror  关注的是文件操作中的错误状态,即是否发生了读写错误。
 feof  关注的是文件流的位置,即是否到达文件的末尾。
使用场景 :
 ferror  通常在文件操作之后调用,用于诊断操作是否成功。
 feof  通常在文件读取操作中或结束后调用,用于判断读取是否已完成。
返回值含义 :
 ferror  的非零返回值表示文件操作中有错误发生。
 feof  的非零返回值表示文件流已到达文件末尾。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python套接字
  • 植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
  • 一些线上常用排查问题的命令
  • 深度学习之概率论预备知识点(3)
  • CVE-2024-46103
  • 深度学习02-pytorch-08-自动微分模块
  • Qt/C++开发经验
  • vue2使用npm引入依赖(例如axios),报错Module parse failed: Unexpected token解决方案
  • 【零散技术】Odoo17通过Controller下载PDF
  • js-利用创建a便签实现下载文件功能
  • AUTOSAR_EXP_ARAComAPI的5章笔记(9)
  • C语言数组学习
  • 语言的条件语句
  • 住宅HTTP代理:提升网络隐私与安全的新选择
  • 角色权限管理实现学习
  • .pyc 想到的一些问题
  • 【347天】每日项目总结系列085(2018.01.18)
  • 30秒的PHP代码片段(1)数组 - Array
  • flask接收请求并推入栈
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • JS基础之数据类型、对象、原型、原型链、继承
  • orm2 中文文档 3.1 模型属性
  • 关于extract.autodesk.io的一些说明
  • 关于List、List?、ListObject的区别
  • 关于使用markdown的方法(引自CSDN教程)
  • 前端之React实战:创建跨平台的项目架构
  • 如何设计一个比特币钱包服务
  • 使用API自动生成工具优化前端工作流
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 一天一个设计模式之JS实现——适配器模式
  • 06-01 点餐小程序前台界面搭建
  • zabbix3.2监控linux磁盘IO
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​ArcGIS Pro 如何批量删除字段
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #git 撤消对文件的更改
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (¥1011)-(一千零一拾一元整)输出
  • (1)Hilt的基本概念和使用
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (js)循环条件满足时终止循环
  • (MATLAB)第五章-矩阵运算
  • (Oracle)SQL优化技巧(一):分页查询
  • (rabbitmq的高级特性)消息可靠性
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (笔记)M1使用hombrew安装qemu
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十六)、把镜像推送到私有化 Docker 仓库
  • (十五)使用Nexus创建Maven私服
  • (一)Linux+Windows下安装ffmpeg