文件读写全套易错笔记
一、语法类错误错误代码修正代码错误1fopen不做空指针判断错误代码FILE*fpfopen(test.txt,r);fputc(a,fp);// 打开失败fpNULL直接崩溃问题文件打开失败不会捕获后续读写直接程序崩溃。修正代码FILE*fpfopen(test.txt,r);if(fpNULL){perror(文件打开失败);return1;}fputc(a,fp);错误2绝对路径、转义符、路径格式错误错误代码// 问题1单斜杠\是转义字符识别失败FILE*fpfopen(C:\Users\test.txt,rb);// 问题2绝对路径绑定本机换电脑直接找不到文件FILE*fpfopen(D:/user/123/b.txt,rb);推荐写法// 双反斜杠转义绝对路径FILE*fpfopen(C:\\Users\\test.txt,rb);// 最优文件放exe同目录使用相对路径FILE*fpfopen(test.txt,rb);错误3打开模式和读写操作不匹配错误代码FILE*fpfopen(data.txt,r);fputs(123,fp);// r只读模式执行写入运行失败要点r/rb仅可读w/wb/a/ab仅可写模式和操作必须对应。二、中文乱码问题文本文件乱码现象写入中文记事本打开乱码。原因VS默认编码GBK记事本默认UTF‑8解析字节编码不匹配。解决记事本另存为编码选择ANSI统一全部代码、文件编码为UTF‑8测试优先使用ASCII英文数字。二进制文件损坏乱码原因文本模式会自动转换\n与\r\n破坏二进制字节。解决图片、视频、压缩包读写必须加b使用rb/wb/ab。三、三大写入函数返回值区分核心易混点1. fputc单个字符写入原型int fputc(int ch, FILE* fp);成功返回字符ASCII十进制值如a返回97。失败返回EOF(-1)。intretfputc(a,fp);printf(%d,ret);// 输出972. fputs字符串写入原型int fputs(const char* str, FILE* fp);成功固定返回0。失败返回EOF(-1)。注意返回值为状态码禁止用%c打印。intretfputs(hello,fp);printf(%d,ret);// 成功输出03. fwrite二进制块批量写入原型size_t fwrite(const void* buf, size_t 块大小, size_t 块数量, FILE* fp);返回值实际成功写入的完整块个数不是字节数。判断失败返回值 传入块总数。总字节 返回值 × 单个块大小。返回值是无符号数禁止用%c打印。4. fread二进制读取原型size_t fread(void* buf, size_t 块大小, size_t 块数量, FILE* fp);返回值读到的完整块个数读取完毕返回0不能用EOF判断结束。返回值汇总表函数成功返回值失败/结束判断可用%c打印fputc字符ASCII码97ret EOF✅可以fputs固定0ret EOF❌不建议fwrite成功写入的块数量返回值预期块数❌禁止fread读到的块数量返回值 0❌禁止fread‑fwrite拷贝易错点货车模型通俗解析变量类比arr相当于货车车厢1024是车厢最大容量n记录本趟实际装载字节数。fread(缓冲区, 单块大小, 最多读多少块, 源文件)‑ arr货车车厢‑ 11块1字节‑ 1024一趟最多拉1024字节‑ file1源文件循环执行流程fread读取数据存入缓冲区实际读到字节数赋值给nn ! 0有数据就拷贝n0代表文件读完循环结束。fwrite(arr,1,n,file2)‑ n只写入本次读到的数据若固定写1024缓冲区残留垃圾数据文件末尾乱码。完整运行流程二进制模式打开源文件file1(rb)、目标文件file2(wb)缓冲区单次读取1024字节读满就写1024字节末尾不足就只写n字节fread返回0文件读取完毕退出循环关闭文件拷贝完成。易错点fwrite第三个参数必须填n不能写1024二进制文件必须使用rb/wb缓冲区大小可改为4096、8192缓冲区越大拷贝速度越快n规范类型为size_t无符号类型int可运行但不规范。错误缓冲区写法// 错误最后一次写入垃圾数据while(1){fread(arr,1,1024,file1);fwrite(arr,1,1024,file2);}正确模板charbuf[1024];size_tn;while((nfread(buf,1,1024,file1))!0){fwrite(buf,1,n,file2);}拓展坑点数组类型匹配intarr[20];// 错误fread(arr,1,20,fp);// 正确块大小使用sizeof(int)fread(arr,sizeof(int),20,fp);四、char数组底层原理易错点代码char arr[] {97,98,99};内存底层只存储数字97、98、99char占1字节fwrite第二个参数填1刚好匹配记事本按照ASCII码将字节翻译为abcint数组每个元素4字节块大小必须改为sizeof(int)否则数据错乱乱码二进制数组没有\0结束符和字符串规则区分开。五、完整无BUG代码1. 二进制文件拷贝代码图片、视频通用#define_CRT_SECURE_NO_WARNINGS#includestdio.h#includestdlib.hintmain(){// 二进制模式打开源文件、目标文件FILE*file1fopen(src.txt,rb);FILE*file2fopen(dest.txt,wb);// 空指针容错判断if(file1NULL||file2NULL){perror(打开失败);return1;}chararr[1024];// 货车缓冲区最大1024字节size_tn;// 保存本次实际读取字节数while((nfread(arr,1,1024,file1))!0){fwrite(arr,1,n,file2);}fclose(file1);fclose(file2);system(pause);return0;}2. 文本读写示例fputc/fputs#define_CRT_SECURE_NO_WARNINGS#includestdio.h#includestdlib.hintmain(){FILE*fpfopen(test.txt,w);if(fpNULL){perror(打开失败);return1;}fputc(A,fp);fputs(Hello World,fp);fclose(fp);system(pause);return0;}六、通用注意事项全部踩坑汇总文件打开模式区分‑w/wb清空原有文件内容从头写入‑r/rb只读文件不存在直接打开失败‑a/ab末尾追加写入不覆盖旧内容‑ 二进制文件读写必须带b(rb/wb/ab)防止换行符篡改文件。必须执行fclose()‑ 刷新缓冲区把内存数据写入磁盘避免数据丢失‑ 释放文件锁。EOF使用规则EOF(-1)仅用于fputc、fputsfread读取结束判断返回值是否为0。数据类型规范fread、fwrite返回值类型是size_t无符号整数接收变量优先用size_t禁止用int。VS编译警告配套处理‑ system()未定义添加头文件#include stdlib.h‑ fopen警告代码最顶部写#define _CRT_SECURE_NO_WARNINGS放在所有头文件前面强制规则清单① fopen之后立刻做空指针判断避免空指针崩溃② Windows路径必须转义\\或使用/③ 二进制文件模式必须带b④ 文件读写完毕一定要fclose⑤ 打开模式和读写操作保持匹配⑥ fread结束条件判断返回值是否为0禁止使用EOF⑦ 宏定义写在头文件最前面。

相关新闻

vla学习笔记(2) lerobot配置gazebo

vla学习笔记(2) lerobot配置gazebo

一、写gazebo.launch.py 直接复制下列文件,并且修改对应的文件名称import os from launch import LaunchDescription from launch.actions import ExecuteProcess, RegisterEventHandler, TimerAction from launch_ros.actions import Node from launch_ros.substit…

2026/7/26 0:47:10 阅读更多 →
概念、概要、详细设计编写心法

概念、概要、详细设计编写心法

一文讲清概念设计、概要设计、详细设计:别再把三种文档写混了设计文档不是越细越好,而是要在正确阶段回答正确问题:概念设计统一业务语言,概要设计搭系统骨架,详细设计画代码施工图。很多研发同学写设计文档时&#xf…

2026/7/25 11:14:50 阅读更多 →
python数据可视化技巧的100个练习 -- 26. 平行坐标图用于客户数据分析

python数据可视化技巧的100个练习 -- 26. 平行坐标图用于客户数据分析

重要性★★★★☆ 难度★★★☆☆ 你是一家零售公司的数据分析师。你的经理要求你分析客户数据以识别模式和趋势。你需要创建一个平行坐标图来可视化不同客户属性(如年龄、年收入和消费得分)之间的关系。 生成一个包含以下列的样本数据集:‘Age’(年龄)、‘Annual Inco…

2026/7/26 2:59:28 阅读更多 →

最新新闻

终极空间飞行模拟器:Orbiter专业指南与实战深度解析

终极空间飞行模拟器:Orbiter专业指南与实战深度解析

终极空间飞行模拟器:Orbiter专业指南与实战深度解析 【免费下载链接】orbiter Open-source repository of Orbiter Space Flight Simulator 项目地址: https://gitcode.com/gh_mirrors/or/orbiter Orbiter空间飞行模拟器是一款基于牛顿力学的开源航天模拟平台…

2026/7/26 15:37:08 阅读更多 →
Leanstral 1.5:低门槛形式化验证工具部署与实战指南

Leanstral 1.5:低门槛形式化验证工具部署与实战指南

今天来看一个让形式化验证变得触手可及的项目——Leanstral 1.5。这是Mistral AI团队开源的免费证明引擎,专门用于Lean 4环境下的形式化验证和代码正确性证明。最吸引人的是,它用极低的成本实现了专业级的证明能力,让普通开发者也能用上原本只…

2026/7/26 15:37:08 阅读更多 →
Fleet开源设备管理平台实战指南:5大优势实现跨平台设备统一管控

Fleet开源设备管理平台实战指南:5大优势实现跨平台设备统一管控

Fleet开源设备管理平台实战指南:5大优势实现跨平台设备统一管控 【免费下载链接】fleet Open device management 项目地址: https://gitcode.com/GitHub_Trending/fl/fleet 开源设备管理平台Fleet正在重新定义企业级设备管理的标准,为技术决策者和…

2026/7/26 15:37:08 阅读更多 →
企业级大模型落地:选型、部署与成本优化实战

企业级大模型落地:选型、部署与成本优化实战

1. 项目概述 最近两年,大模型技术从实验室走向产业界的步伐越来越快。作为一名参与过多个企业级AI项目落地的技术负责人,我深刻体会到:从技术选型到实际部署,中间存在着巨大的"落地鸿沟"。很多团队在POC阶段表现惊艳的模…

2026/7/26 15:37:08 阅读更多 →
上下文感知AI代理架构:Kimi CLI如何重塑终端开发范式

上下文感知AI代理架构:Kimi CLI如何重塑终端开发范式

上下文感知AI代理架构:Kimi CLI如何重塑终端开发范式 【免费下载链接】kimi-cli Kimi Code CLI is your next CLI agent. 项目地址: https://gitcode.com/GitHub_Trending/ki/kimi-cli 在传统开发工作流中,命令行工具与AI能力的割裂导致开发者需要…

2026/7/26 15:37:08 阅读更多 →
Windows 10/11窗口毛玻璃特效完整指南:DWMBlurGlass深度解析

Windows 10/11窗口毛玻璃特效完整指南:DWMBlurGlass深度解析

Windows 10/11窗口毛玻璃特效完整指南:DWMBlurGlass深度解析 【免费下载链接】DWMBlurGlass Add custom effect to global system title bar, support win10 and win11. 项目地址: https://gitcode.com/gh_mirrors/dw/DWMBlurGlass 你是否厌倦了Windows系统单…

2026/7/26 15:36:08 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻