网站推广建站工信网查询查询系统

张小明 2026/3/13 4:29:07
网站推广建站,工信网查询查询系统,可以充值的网站怎么做,鹤壁建设网站推广公司电话引言在 C 语言文件操作中#xff0c;“文件指针” 和 “偏移量” 是两个绕不开的核心概念#xff0c;也是很多初学者容易混淆的知识点。比如#xff1a;为什么fseek(pf,4,SEEK_SET)读取到的是e而不是d#xff1f;SEEK_END基准下偏移量该怎么算#xff1f;今天这篇文章“文件指针” 和 “偏移量” 是两个绕不开的核心概念也是很多初学者容易混淆的知识点。比如为什么fseek(pf,4,SEEK_SET)读取到的是e而不是dSEEK_END基准下偏移量该怎么算今天这篇文章我们用「生活类比 公式拆解 代码验证」的方式从基础到实战彻底搞懂它们的关系看完就能直接上手用一、先搞懂什么是 “文件指针”文件指针本质是FILE*类型的变量但不用死记定义我们用生活场景类比把文件想象成一本 “字节组成的书”文件指针就是你 “阅读 / 写字时的手指”—— 它永远指向下一次要操作的字节位置。比如你用手指指着书中某一行的某个字“手指” 就是文件指针“字的位置” 就是指针对应的字节偏移量。关键前提必记文件在磁盘中按「字节」连续存储每个字节都有唯一的偏移量offset且偏移量从0开始计数不是 1。以文件内容为abcdef为例每个字符占 1 字节偏移量与字符的对应关系如下偏移量字节位置012345对应字符abcdef文件指针初始位置 →✨⚠️ 注意文件刚打开时指针默认指向偏移量0即文件开头。二、偏移量控制文件指针 “移动的距离和方向”偏移量不是指针本身而是描述 “指针要怎么移动” 的参数—— 包含 “移动步长” 和 “移动方向”。所有主动移动指针的操作比如核心函数fseek都遵循同一个核心公式新指针位置 基准位置 偏移量核心规则3 个基准位置fseek的第三个参数fseek(文件指针, 偏移量, 基准位置)是控制指针移动的 “万能函数”3 个基准位置对应 3 种 “移动参考点”结合生活场景更容易记基准位置常量含义通俗版看书场景类比适用场景SEEK_SET以 “文件开头” 为参考点偏移 0从书的第一页第一个字开始数 “第 N 个字”直接定位到文件指定位置SEEK_CUR以 “指针当前位置” 为参考点从手指现在指的字开始往前 / 往后数 N 个相对当前位置微调指针SEEK_END以 “文件末尾” 为参考点重点从书的最后一个字的 “下一行” 开始数定位到文件末尾或倒数位置⚠️ 特别提醒SEEK_END的 “文件末尾” 不是最后一个字符的位置而是最后一个字节的下一位比如abcdef的末尾基准是偏移量6。三、核心关系指针位置 基准 偏移分场景拆解 实例结合具体例子文件内容abcdef总长度 6 字节逐个场景验证公式看完直接会用场景 1以文件开头为基准SEEK_SET公式简化新位置 0 偏移量偏移量必须≥0负数会无效实例 1fseek(pf, 4, SEEK_SET)计算0 4 4 → 指针指向偏移量4对应字符e。实例 2fseek(pf, 0, SEEK_SET)计算0 0 0 → 指针回到文件开头对应字符a。✅ 适用场景想直接跳到文件第 N 个字节比如读取文件第 5 个字符。场景 2以指针当前位置为基准SEEK_CUR公式简化新位置 当前位置 偏移量偏移量可正可负正为向后负为向前实例 1初始指针在0指向a→ fseek(pf, 2, SEEK_CUR)计算0 2 2 → 指针指向偏移量2对应字符c。实例 2指针当前在2指向c→ fseek(pf, -1, SEEK_CUR)计算2 - 1 1 → 指针指向偏移量1对应字符b。✅ 适用场景相对当前操作位置微调指针比如读取一个字符后回退到上一个字符。场景 3以文件末尾为基准SEEK_END公式简化新位置 文件总长度 偏移量偏移量通常为负否则会超出文件范围实例 1fseek(pf, -2, SEEK_END)计算6 - 2 4 → 指针指向偏移量4对应字符e。实例 2fseek(pf, -1, SEEK_END)计算6 - 1 5 → 指针指向偏移量5对应字符f。实例 3fseek(pf, 0, SEEK_END)计算6 0 6 → 指针指向文件末尾无字符常用于追加写入a或a模式。✅ 适用场景定位到文件末尾追加内容或读取文件最后几个字符。四、容易踩坑的细节避坑指南在实际开发中很多 bug 都源于对以下细节的忽略一定要牢记1. 偏移量是 “字节数”不是 “字符数”如果文件包含中文比如 UTF-8 编码1 个中文占 3 字节偏移量必须按字节计算不能按字符数举例文件内容为你好abc字节分布如下你占 0-2 字节3 字节好占 3-5 字节3 字节a占 6 字节若想定位到a必须写fseek(pf, 6, SEEK_SET)而不是fseek(pf, 2, SEEK_SET)后者会指向你的第 3 个字节导致乱码。2. 读写操作会自动更新指针位置除了fseek主动移动指针fgetc、fputc、fread、fwrite等读写函数会在操作后自动移动指针偏移量 1 或 读取 / 写入的字节数。举例指针初始在0 → 调用fgetc(pf)读取a → 指针自动跳到1再调用fputc(x, pf) → 在偏移量1写入x → 指针自动跳到2。⚠️ 注意如果读写后需要回到原来的位置记得先用ftell记录当前偏移量操作后用fseek恢复。3. SEEK_END的正偏移会 “拓展文件”如果用fseek(pf, 10, SEEK_END)偏移量为正超出文件原有长度再调用fwrite写入内容文件会被自动拓展中间空缺的字节会填充\0空字符。举例原文件长度 6 字节fseek(pf, 10, SEEK_END)后文件长度变为61016字节偏移量 6-15 之间的字节会填\0。五、代码验证实战演示光说不练假把式我们用一段完整代码验证上述所有知识点直接复制到编译器就能运行#include #include 用于exit函数int main() {// 1. 以w模式打开文件读写模式无文件则创建有则清空FILE *pf fopen(test.txt, w);if (pf NULL) { // 必做判断文件是否成功打开perror(fopen failed); // 打印错误原因exit(1); // 退出程序}// 2. 写入测试内容abcdef6字节fputs(abcdef, pf);printf(已写入文件内容abcdef\n);// 3. 测试SEEK_SET偏移4 → 指向efseek(pf, 4, SEEK_SET);printf(SEEK_SET4 读取到的字符%c\n, fgetc(pf)); // 输出e// 4. 测试SEEK_CUR当前指针在5 → 偏移-2 → 指向3dfseek(pf, -2, SEEK_CUR);printf(SEEK_CUR-2 读取到的字符%c\n, fgetc(pf)); // 输出d// 5. 测试SEEK_END偏移-1 → 指向5ffseek(pf, -1, SEEK_END);printf(SEEK_END-1 读取到的字符%c\n, fgetc(pf)); // 输出f// 6. 关闭文件必做避免内存泄漏fclose(pf);pf NULL; // 指针置空避免野指针return 0;}运行结果已写入文件内容abcdefSEEK_SET4 读取到的字符eSEEK_CUR-2 读取到的字符dSEEK_END-1 读取到的字符f代码说明加入pf NULL的判断这是文件操作的 “安全习惯”避免因文件路径错误、权限不足等问题导致崩溃最后pf NULL防止关闭文件后指针指向无效内存野指针。六、最终总结一张表搞定为了方便记忆我们把核心概念和关系整理成表格概念本质核心关系关键操作文件指针操作文件的 “光标”FILE*指向某个偏移量对应的字节位置fopen创建fclose销毁偏移量指针移动的 “步长 方向”新指针位置 基准位置 偏移量fseek传入参数基准位置指针移动的 “参考点”3 种SEEK_SET开头、SEEK_CUR当前、SEEK_END末尾fseek第三个参数简单说偏移量是 “移动的距离”文件指针是 “移动后的落脚点”—— 偏移量决定指针去哪指针位置决定你能操作哪个字节。结尾如果看完这篇文章你还有疑问比如二进制文件与文本文件的偏移差异、ftell函数的用法欢迎在评论区留言我会第一时间回复也可以点赞收藏下次遇到文件指针问题时直接拿出来对照着用#C 语言 #文件操作 #文件指针 #fseek #C 语言进阶
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设与实践心得体会嘉兴网站免费制作

在竞技游戏的激烈对抗中,每一次按键都承载着胜负的关键。当你在《街霸》中搓招时,当你在《Apex》中急停时,是否曾因"左右同时按"导致角色原地罚站?这就是SOCD(同时相反方向输入)冲突在作祟。今天…

张小明 2026/3/5 4:16:27 网站建设

成品动漫和视频网站入口wordpress页面构建编辑插件

第一章 设计背景与核心需求 人民大厦作为城市地标性建筑,其夜间景观霓虹灯不仅是城市夜景的重要组成部分,还承载着文化展示与形象塑造的功能。传统霓虹灯控制系统存在效果固定、操作复杂、能耗较高等问题,难以满足动态化、主题化的展示需求。…

张小明 2026/3/5 4:16:32 网站建设

如何做网站轮播大图网站虚拟主机1g

EmotiVoice部署教程:快速在本地运行语音合成模型 在虚拟主播直播带货、AI游戏角色实时对话、个性化有声书生成等场景日益普及的今天,用户早已不再满足于“能说话”的机械语音。他们期待的是有情绪、有个性、像真人一样会呼吸和表达的声音。然而&#xff…

张小明 2026/3/5 4:16:29 网站建设

模板建网站多少钱中国建设银行积分查询网站

2025年被誉为AI交互数字人的黄金落地期,众多企业纷纷布局这一领域。本文将介绍十大高口碑的交互数字人,透析其背后的技术演进路径。这些标杆企业不仅在智能互动方面拥有独特优势,更为用户提供了全新的体验。探索这些数字人的魅力,…

张小明 2026/3/5 4:16:38 网站建设

全球十大创意广告百度首页排名优化哪家专业

FreeControl:在PC上控制Android设备的完整指南 【免费下载链接】FreeControl 在PC上控制Android设备。 项目地址: https://gitcode.com/gh_mirrors/fr/FreeControl FreeControl是一款功能强大的开源工具,它让您能够在PC上无缝控制Android设备&…

张小明 2026/3/5 4:16:34 网站建设

人才网站app建设建议免登录直接玩的游戏

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

张小明 2026/3/5 4:16:35 网站建设