Linux 文件操作-标准IO函数4-fseek设置文件偏移量、ftell获取当前偏移量、rewind使文件偏移量(为0)定位到开头

devtools/2025/3/20 9:11:34/

目录

1.fseek设置文件偏移量

2.ftell获取当前偏移量

3.rewind使文件偏移量(为0)定位到开头

4.程序验证


1.fseek设置文件偏移量

函数原型:

/* 功能:设置文件位置指针的偏移量
参数:
stream:文件指针
offset:偏移量可正可负也可为0, > 0 向后偏移; < 0 向前偏移whence:相对位置SEEK_SET 文件起始位置SEEK_CUR 文件当前位置SEEK_END 文件末尾位置(最后一个字符后面一个位置)返回值:成功:0失败:‐1  */int fseek(FILE *stream, long offset, int whence);

2.ftell获取当前偏移量

函数原型:

/* 功能:获取当前文件的偏移量参数:stream:文件指针返回值:获取当前文件的偏移量 */long ftell(FILE *stream);

3.rewind使文件偏移量(为0)定位到开头

函数原型:

/* 功能:将文件位置定位到起始位置参数:stream:文件指针返回值:无 */void rewind(FILE *stream);
fseek(fp, 0, SEEK_SET);//等价于 rewind(fp); //定位到开头

4.程序验证

#include <stdio.h>int main(int argc, char *argv[])
{FILE *fp = NULL;char buf[64] = "";fp = fopen("./file.txt", "w+");if(fp == NULL){printf("fail to fopen\n");return -1;}//通过fputs函数向文件写入数据fputs("0123456789\n", fp);//11字节fputs("ABCDEFGHIJ\n", fp);//11字节fputs("9876543210", fp);//10字节,共写入32字节//获取当前文件指针的读写位置printf("fputs offset = %ld\n", ftell(fp));//将当前文件的读写文件设置到文件的起始位置rewind(fp);//fseek(fp, 0, SEEK_SET);//等价于 rewind(fp); //定位到开头//获取当前文件指针的读写位置printf("rewind(fp) offset = %ld\n", ftell(fp));//SEEK_CUR:为当前位置(上述程序偏移到文件开头)//将当前文件的读写位置设置为SEEK_CUR+6fseek(fp, 6, SEEK_CUR); printf("SEEK_CUR+6 offset = %ld\n", ftell(fp));//读取内容while(fgets(buf, 64, fp) != NULL){printf("SEEK_CUR+6 buf = %s\n", buf);}//将当前文件的读写位置设置为倒数第3个位置fseek(fp, -3, SEEK_END); printf("SEEK_CUR-3 offset = %ld\n", ftell(fp));//读取内容while(fgets(buf, 64, fp) != NULL){printf("SEEK_END-3 buf = %s\n", buf);}//将当前文件的读写位置设置为开头第5个位置fseek(fp, 5, SEEK_SET); //读取内容printf("SEEK_SET+5 offset = %ld\n", ftell(fp));while(fgets(buf, 64, fp) != NULL){printf("SEEK_SET+5 buf = %s\n", buf);}fclose(fp);  	 	return 0;
}

运行结果:


http://www.ppmy.cn/devtools/168584.html

相关文章

言简意赅 Linux部署elasticsearch7.15.2

目录 下载 zip 包 在 linux 里面解压 进入bin目录 创建用户useres 授权到es目录 切换到useres用户 bin 目录启动 配置 端口开放 配置 jdk 单节点启动 一定要配置 说明成功 byd折磨了我两天 下载 zip 包 通过网盘分享的文件&#xff1a;elasticsearch-7.15.2-linux…

【SpringCloud】服务注册/服务发现

文章目录 前言什么是注册中心CAP理论Eureka搭建Eureka Server服务注册服务发现 前言 在生活中&#xff0c;我们不可避免地与各种医院、学校、政府等机构打交道&#xff0c;那么要想与这些机构取得联系&#xff0c;就需要知道这些机构的电话号码&#xff0c;但是这些机构的电话…

掌握些许 IPv6 要点,windows 远程桌面安全便利两相宜!

掌握这些要点&#xff0c;Windows 远程桌面安全便利两相宜&#xff01; 在日常办公中&#xff0c;许多人会用到 Windows 系统的远程桌面功能。但在实际使用时&#xff0c;会遇到内网计算机难以通过运营商的动态 ip 与多层 NAT 向互联网暴露端口的技术问题&#xff0c;和计算机…

Oracle ASM Failgroup故障组

Oracle ASM Failgroup故障组 1. 故障组的核心作用2. 故障组的配置规则3. 故障组的设计最佳实践4. 故障组的实际示例场景1&#xff1a;普通冗余&#xff08;2个故障组&#xff09;场景2&#xff1a;高冗余&#xff08;3个故障组&#xff0c;跨数据中心&#xff09; 关键注意事项…

pfsense部署三(snort各版块使用)

在上篇文章上我们已经进行了snort的基础配置了&#xff0c;接下来需要进行snort的具体配置&#xff0c;其中包括各板块的设置&#xff0c;例&#xff1a;白名单&#xff0c;警报&#xff0c;规则设置等 规则库配置 点击 service > snort > Global Settings ,在code值…

python函数的多种参数使用形式

目录 1. 位置参数&#xff08;Positional Arguments&#xff09; 2. 关键字参数&#xff08;Keyword Arguments&#xff09; 3. 默认参数&#xff08;Default Arguments&#xff09; 4. 可变参数&#xff08;Variable Positional Arguments&#xff09; 5. 关键字可变参数&…

openpnp - 如果安装面的钣金接触面不平,可以尝试加垫片

文章目录 openpnp - 如果安装面的钣金接触面不平&#xff0c;可以尝试加垫片概述吐槽备注END openpnp - 如果安装面的钣金接触面不平&#xff0c;可以尝试加垫片 概述 在X轴导轨上&#xff0c;架上百分表&#xff0c;打设备的工作平面的平面度&#xff0c;发现工作平面不平(和…

蓝桥杯刷题——第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

一、0握手问题 - 蓝桥云课 算法代码&#xff1a; #include <iostream> using namespace std; int main() {int sum0;for(int i49;i>7;i--)sumi;cout<<sum<<endl;return 0; } 直接暴力&#xff0c;题意很清晰&#xff0c;累加即可。 二、0小球反弹 - 蓝…