天水网站建设公司排名美术馆网站建设

张小明 2026/1/12 5:40:18
天水网站建设公司排名,美术馆网站建设,响应式布局网站,在上面网站上可以做统计图在 C 语言开发中#xff0c;文件读写是不可或缺的核心技能 —— 无论是处理配置文件、存储用户数据#xff0c;还是实现日志功能#xff0c;都离不开对文件的操作。今天这篇笔记#xff0c;会从文件操作的基本概念入手#xff0c;逐步拆解打开、关闭、读写文件的关键函数文件读写是不可或缺的核心技能 —— 无论是处理配置文件、存储用户数据还是实现日志功能都离不开对文件的操作。今天这篇笔记会从文件操作的基本概念入手逐步拆解打开、关闭、读写文件的关键函数并结合实战代码演示帮你彻底掌握 C 语言文件读写的精髓一、文件读写前必知文件指针与打开模式 在 C 语言中所有文件操作都围绕文件指针FILE *展开它就像 “文件的身份证”记录着文件的位置、状态等关键信息。使用前需先通过fopen()函数打开文件并获取指针而打开模式决定了文件的操作权限常见模式如下打开模式含义适用场景r只读打开文件必须存在读取配置文件、日志文件w只写打开文件不存在则创建存在则清空新建 / 覆盖写入文件如输出结果a追加写入文件不存在则创建存在则在末尾追加记录日志、累加数据r读写打开文件必须存在可修改内容编辑已有文件w读写打开文件不存在则创建存在则清空新建可读写文件a读写打开文件不存在则创建写操作只能追加边读边追加数据二、核心函数拆解打开→读写→关闭 文件操作的流程遵循 “打开→操作→关闭” 的逻辑任何环节出错都可能导致文件损坏或数据丢失下面逐个讲解关键函数。1. 打开文件fopen()函数原型FILE *fopen(const char *filename, const char *mode);作用按指定模式打开文件返回文件指针若失败如路径错误、权限不足返回NULL。注意打开文件后必须判断指针是否为NULL避免后续操作崩溃示例代码打开一个文本文件#include stdio.hint main() {// 以只读模式打开当前目录下的 test.txtFILE *fp fopen(test.txt, r);// 判断文件是否成功打开if (fp NULL) {printf(文件打开失败❌\n);return 1; // 失败退出}printf(文件打开成功✅\n);// 后续操作...// 关闭文件关键避免内存泄漏fclose(fp);return 0;}2. 关闭文件fclose()函数原型int fclose(FILE *stream);作用关闭已打开的文件释放文件指针占用的资源成功返回0失败返回EOF-1。注意文件使用完后必须关闭若程序异常退出未关闭可能导致数据未写入磁盘或文件损坏。3. 文本文件读写常用函数对比文本文件读写主要有两类函数按字符读写适合逐字符处理和按行读写适合批量处理具体用法如下1按字符读写fgetc() fputc()fgetc(fp)从文件指针fp指向的文件中读取一个字符返回该字符的 ASCII 值若读到文件末尾返回EOF。fputc(ch, fp)将字符ch写入文件指针fp指向的文件成功返回该字符失败返回EOF。示例复制一个文本文件#include int main() {// 打开源文件只读和目标文件只写不存在则创建FILE *src fopen(source.txt, r);FILE *dest fopen(destination.txt, w);if (src NULL || dest NULL) {printf(文件打开失败❌\n);return 1;}int ch; // 注意用int接收fgetc()避免EOF-1与char的255冲突// 逐字符读取源文件直到末尾while ((ch fgetc(src)) ! EOF) {fputc(ch, dest); // 逐字符写入目标文件}printf(文件复制完成✅\n);// 关闭文件fclose(src);fclose(dest);return 0;}2按行读写fgets() fputs()fgets(buf, n, fp)从文件中读取一行字符存入缓冲区buf最多读取n-1个字符最后留\0若读到换行符或文件末尾停止读取返回buf地址失败返回NULL。fputs(buf, fp)将缓冲区buf中的字符串不含\0写入文件成功返回非负值失败返回EOF。示例读取文件内容并打印同时追加一行数据#include #include int main() {char buf[1024]; // 定义缓冲区存储一行数据FILE *fp fopen(test.txt, a); // 读写模式可追加if (fp NULL) {printf(文件打开失败❌\n);return 1;}// 先读取文件原有内容需将文件指针移到开头a模式默认在末尾rewind(fp); // 移动指针到文件开头printf(文件原有内容\n);while (fgets(buf, sizeof(buf), fp) ! NULL) {printf(%s, buf); // 打印每行内容fgets会读取换行符}// 追加一行数据char new_data[] This is new content!\n;fputs(new_data, fp);printf(数据追加完成✅\n);fclose(fp);return 0;}4. 二进制文件读写fread() fwrite()二进制文件如图片、音频、自定义结构体数据无法用文本函数读写需用fread()和fwrite()按 “块” 操作数据。fread(buf, size, count, fp)从文件中读取count个大小为size的 “块”存入buf返回实际读取的块数若小于count可能到末尾或出错。fwrite(buf, size, count, fp)将buf中count个大小为size的 “块” 写入文件返回实际写入的块数若小于count表示写入失败。示例将结构体数据写入二进制文件再读取出来#include 定义一个结构体存储学生信息typedef struct {char name[20];int age;float score;} Student;int main() {Student stu1 {Zhang San, 20, 95.5};Student stu2; // 用于存储读取的数据FILE *fp fopen(students.bin, wb); // 二进制读写模式if (fp NULL) {printf(文件打开失败❌\n);return 1;}// 写入结构体数据1个块大小为Studentint write_count fwrite(stu1, sizeof(Student), 1, fp);if (write_count 1) {printf(结构体写入成功✅\n);} else {printf(结构体写入失败❌\n);fclose(fp);return 1;}// 移动指针到文件开头准备读取rewind(fp);// 读取结构体数据int read_count fread(stu2, sizeof(Student), 1, fp);if (read_count 1) {printf(读取到的学生信息\n);printf(姓名%s\n年龄%d\n分数%.1f\n, stu2.name, stu2.age, stu2.score);} else {printf(结构体读取失败❌\n);}fclose(fp);return 0;}三、避坑指南文件读写常见错误及解决方法 ⚠️文件打开失败返回 NULL检查文件路径是否正确相对路径是相对于程序运行目录不是代码文件目录检查文件权限如只读文件用w模式打开会失败检查磁盘空间是否充足创建新文件时。读取到乱码或数据错误文本文件确保读写模式与文件类型匹配如二进制文件用文本模式读会乱码二进制文件确保fread()/fwrite()的size和count参数正确与结构体大小一致。数据未写入文件忘记关闭文件fclose()会强制刷新缓冲区未关闭可能导致缓冲区数据未写入磁盘缓冲区未刷新可手动调用fflush(fp)强制刷新但尽量用fclose()。文件指针位置错误读写切换时需用rewind(fp)移到开头、fseek()指定位置或ftell()获取当前位置调整指针避免读写位置混乱。四、总结C 语言文件读写的核心是 “指针 函数 模式”用fopen()打开文件获取文件指针务必判断是否为NULL根据文件类型文本 / 二进制选择对应的读写函数fgetc/fputs 或 fread/fwrite操作完成后用fclose()关闭文件释放资源注意处理边界情况如文件末尾、操作失败避免程序崩溃或数据丢失。掌握这些内容后你就能轻松应对 C 语言开发中的文件操作场景啦如果有疑问欢迎在评论区留言讨论
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

好的室内设计网站做网站用方正字体可以额的

深入探索Linux内核构建与系统安全保障 1. Linux内核构建全流程 在选择UHCI或OHCI接口支持后,需要为系统中的特定USB设备构建驱动模块。若想了解更多USB设备信息,可查阅 /usr/src/linux*/Documentation/usb 目录下的文档,尤其是 usb-help.txt 文件中的链接。 对于内核…

张小明 2026/1/9 7:31:15 网站建设

网站制作价格行情做网站要注册第35类商标吗

Mac上的R版本还是四五年前的老版本,最近发现很多函数包都不支持,想更新电脑上的R版本,担心电脑R装的版本太多会互相冲突,并且留下很多冗余的垃圾,查询教程后整理如下,方便以后使用。 如果您想升级旧版本的 …

张小明 2026/1/8 22:18:35 网站建设

建设个人网站百度网站如何建设

BoringNotch安装配置教程:将MacBook凹口变为动态音乐控制中心 【免费下载链接】boring.notch TheBoringNotch: Not so boring notch That Rocks 🎸🎶 项目地址: https://gitcode.com/gh_mirrors/bor/boring.notch BoringNotch是一款创…

张小明 2026/1/9 8:03:11 网站建设

镇江网站建设找思创英文网站建设szjijie

深入内核:用WinDbg图解追踪驱动对象的“生与死”你有没有遇到过这样的问题——驱动加载正常,运行也看似没问题,但就是无法卸载?或者系统重启前突然蓝屏,错误码指向某个IRP处理函数?更糟的是,日志…

张小明 2026/1/9 7:44:12 网站建设

免费自建商城网站网站推广策划书范文

深入理解并创建强大的登录脚本 在当今的网络环境中,登录脚本对于用户环境的配置和管理起着至关重要的作用。传统的登录脚本要么不存在,要么是简单的包含一系列 net use 命令的批处理文件。然而,借助 Microsoft Visual Basic Script(VBScript)的强大功能,我们可以在登录…

张小明 2026/1/9 8:57:14 网站建设

网站开发开发网上定做衣服

Samba 守护进程和命令总结 1. 基本文件属性控制选项 在进行文件归档操作时,有几个选项可用于控制文件属性是否包含在归档中: - hidden|nohidden :控制是否将设置了隐藏属性的文件包含在归档中,默认包含设置了隐藏位的文件。 - system|nosystem :决定是否将设置了系…

张小明 2026/1/9 8:30:45 网站建设