对于初学 C 语言的同学来说之前写的代码运行一次数据就消失了文件操作就是帮我们把数据永久保存到磁盘的核心技能这篇文章从零开始带你吃透 C 语言文件的所有基础知识点看完就能直接上手写代码一、为什么要学文件操作我们平时写的代码数据都存在内存里程序关闭数据直接清空。 而文件是存放在硬盘 / 磁盘上的程序关闭、电脑重启数据都不会丢失比如学生管理系统的学生信息、游戏的存档、记事本的文字全都是靠文件保存的。二、文件基础概念1. 什么是文件简单说磁盘上存放数据的东西就是文件。 C 语言中文件分两类程序文件.c 源文件、.exe 可执行文件数据文件存放我们要保存的数据txt、二进制文件等我们重点学这个2. 文件名唯一标识每个文件都有唯一的名字格式文件路径 文件名 后缀例子D:\code\test.txt绝对路径完整路径从盘符开始相对路径和程序在同一文件夹下直接写文件名test.txt注意C 语言中写路径要用\\表示一个\因为\是转义字符三、文件操作的核心文件指针C 语言操作文件全靠文件指针定义方式FILE* pf; // 定义一个文件指针变量FILE是 C 语言标准库定义的结构体类型pf指向一个文件的信息区通过它就能操作文件不用关心FILE内部细节会用就行四、文件的打开与关闭必背操作文件的固定流程打开文件 → 读写文件 → 关闭文件1. 打开文件fopen 函数FILE* fopen(const char* filename, const char* mode);参数 1文件名相对 / 绝对路径参数 2打开模式最常用的背下来返回值打开成功返回有效指针失败返回NULL2. 关闭文件fclose 函数int fclose(FILE* stream);用完文件必须关闭否则会造成数据丢失、资源泄漏关闭后把指针置NULL避免野指针✅ 最常用文件打开模式新手必记表格模式含义注意r只读文件必须存在不存在报错w只写文件不存在则创建存在则清空内容rb二进制读操作二进制文件wb二进制写操作二进制文件✅ 标准代码模板万能框架#include stdio.h // 解决VS安全警告 #define _CRT_SECURE_NO_WARNINGS 1 int main() { // 1. 打开文件 FILE* pf fopen(test.txt, r); // 判断是否打开成功 if (pf NULL) { perror(fopen); // 打印错误原因 return 1; // 程序退出 } // 2. 读写文件中间写操作逻辑 // 3. 关闭文件 fclose(pf); pf NULL; // 指针置空 return 0; }五、文件的顺序读写重点文件读写分两种文本读写人能看懂、二进制读写机器用1. 文本文件 —— 单字符读写写fputc输出一个字符到文件// 循环写入 a-z for (char ch a; ch z; ch) { fputc(ch, pf); }读fgetc从文件读一个字符int ch 0; // 读到文件末尾会返回 EOF while ((ch fgetc(pf)) ! EOF) { printf(%c, ch); }小知识EOF End Of File值为 - 1代表文件读完了2. 文本文件 —— 一行读写写一行fputsfputs(hello world, pf); // 写入字符串到文件读一行fgetschar arr[20] {0}; // 读一行到arr最多读19个字符 while (fgets(arr, 20, pf) ! NULL) { printf(%s, arr); }3. 格式化读写结构体专用适合读写结构体、多种类型数据名字、年龄、成绩等写fprintf像 printf 一样用struct Stu { char name[20]; int age; float score; }; // 写入结构体数据 struct Stu s {张三, 20, 95.5}; fprintf(pf, %s %d %.2f, s.name, s.age, s.score);读fscanf像 scanf 一样用struct Stu t {0}; fscanf(pf, %s %d %f, t.name, t.age, t.score);4. 二进制读写数据原样存二进制文件人看不懂但读写速度快适合存大量数据、游戏存档。写fwritefwrite(地址, 单个数据大小, 数据个数, 文件指针); // 例子写入一个结构体 fwrite(s, sizeof(struct Stu), 1, pf);读freadfread(s, sizeof(struct Stu), 1, pf);六、文件的随机读写默认文件是顺序读写从头读到尾随机读写可以跳着读 / 写。三个核心函数fseek移动文件指针ftell返回当前指针位置rewind指针回到文件开头例子fseek(pf, 5, SEEK_SET); // 从开头偏移5个字符 int pos ftell(pf); // 查看当前位置 rewind(pf); // 回到开头七、文件缓冲区理解即可C 语言的文件操作有缓冲区数据先写到内存缓冲区缓冲区满了 / 刷新才会写到磁盘fflush(pf)手动刷新缓冲区fclose关闭文件时自动刷新缓冲区所以文件用完一定要关闭否则数据可能写不进磁盘。八、新手常见错误总结忘记判断fopen返回值文件打开失败直接操作程序崩溃用r打开不存在的文件直接报错用w打开文件原有数据被清空忘记关闭文件造成数据丢失路径写错把\写成了\正确写法\\九、完整小案例学生信息存文件把学生信息写入文件再读出来打印直接运行#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h // 学生结构体 struct Stu { char name[20]; int age; float score; }; int main() { // 1. 写入文件 FILE* pf fopen(student.txt, w); if (pf NULL) { perror(fopen); return 1; } struct Stu s {李四, 19, 98.0}; fprintf(pf, %s %d %.2f, s.name, s.age, s.score); fclose(pf); pf NULL; // 2. 读取文件并打印 pf fopen(student.txt, r); struct Stu t {0}; fscanf(pf, %s %d %f, t.name, t.age, t.score); printf(姓名%s\n年龄%d\n成绩%.2f\n, t.name, t.age, t.score); fclose(pf); pf NULL; return 0; }十、总结背会这几点就够了文件操作三步骤打开 → 读写 → 关闭打开用fopen关闭用fclose必须判断空指针文本读写fputc/fgetc、fputs/fgets、fprintf/fscanf二进制读写fwrite/fread随机读写fseek、ftell、rewind记得关闭文件避免数据丢失这就是 C 语言文件操作的全部基础内容照着代码多敲几遍很快就能掌握总结核心流程打开文件 (fopen)→读写数据→关闭文件 (fclose)必须判断文件指针是否为空读写工具文本用fputc/fgetc/fprintf/fscanf二进制用fwrite/fread关键细节路径写\\、w会清空文件、用完文件必须关闭
保姆级教程:C 语言文件操作,新手也能轻松学会!
发布时间:2026/6/10 1:21:13
对于初学 C 语言的同学来说之前写的代码运行一次数据就消失了文件操作就是帮我们把数据永久保存到磁盘的核心技能这篇文章从零开始带你吃透 C 语言文件的所有基础知识点看完就能直接上手写代码一、为什么要学文件操作我们平时写的代码数据都存在内存里程序关闭数据直接清空。 而文件是存放在硬盘 / 磁盘上的程序关闭、电脑重启数据都不会丢失比如学生管理系统的学生信息、游戏的存档、记事本的文字全都是靠文件保存的。二、文件基础概念1. 什么是文件简单说磁盘上存放数据的东西就是文件。 C 语言中文件分两类程序文件.c 源文件、.exe 可执行文件数据文件存放我们要保存的数据txt、二进制文件等我们重点学这个2. 文件名唯一标识每个文件都有唯一的名字格式文件路径 文件名 后缀例子D:\code\test.txt绝对路径完整路径从盘符开始相对路径和程序在同一文件夹下直接写文件名test.txt注意C 语言中写路径要用\\表示一个\因为\是转义字符三、文件操作的核心文件指针C 语言操作文件全靠文件指针定义方式FILE* pf; // 定义一个文件指针变量FILE是 C 语言标准库定义的结构体类型pf指向一个文件的信息区通过它就能操作文件不用关心FILE内部细节会用就行四、文件的打开与关闭必背操作文件的固定流程打开文件 → 读写文件 → 关闭文件1. 打开文件fopen 函数FILE* fopen(const char* filename, const char* mode);参数 1文件名相对 / 绝对路径参数 2打开模式最常用的背下来返回值打开成功返回有效指针失败返回NULL2. 关闭文件fclose 函数int fclose(FILE* stream);用完文件必须关闭否则会造成数据丢失、资源泄漏关闭后把指针置NULL避免野指针✅ 最常用文件打开模式新手必记表格模式含义注意r只读文件必须存在不存在报错w只写文件不存在则创建存在则清空内容rb二进制读操作二进制文件wb二进制写操作二进制文件✅ 标准代码模板万能框架#include stdio.h // 解决VS安全警告 #define _CRT_SECURE_NO_WARNINGS 1 int main() { // 1. 打开文件 FILE* pf fopen(test.txt, r); // 判断是否打开成功 if (pf NULL) { perror(fopen); // 打印错误原因 return 1; // 程序退出 } // 2. 读写文件中间写操作逻辑 // 3. 关闭文件 fclose(pf); pf NULL; // 指针置空 return 0; }五、文件的顺序读写重点文件读写分两种文本读写人能看懂、二进制读写机器用1. 文本文件 —— 单字符读写写fputc输出一个字符到文件// 循环写入 a-z for (char ch a; ch z; ch) { fputc(ch, pf); }读fgetc从文件读一个字符int ch 0; // 读到文件末尾会返回 EOF while ((ch fgetc(pf)) ! EOF) { printf(%c, ch); }小知识EOF End Of File值为 - 1代表文件读完了2. 文本文件 —— 一行读写写一行fputsfputs(hello world, pf); // 写入字符串到文件读一行fgetschar arr[20] {0}; // 读一行到arr最多读19个字符 while (fgets(arr, 20, pf) ! NULL) { printf(%s, arr); }3. 格式化读写结构体专用适合读写结构体、多种类型数据名字、年龄、成绩等写fprintf像 printf 一样用struct Stu { char name[20]; int age; float score; }; // 写入结构体数据 struct Stu s {张三, 20, 95.5}; fprintf(pf, %s %d %.2f, s.name, s.age, s.score);读fscanf像 scanf 一样用struct Stu t {0}; fscanf(pf, %s %d %f, t.name, t.age, t.score);4. 二进制读写数据原样存二进制文件人看不懂但读写速度快适合存大量数据、游戏存档。写fwritefwrite(地址, 单个数据大小, 数据个数, 文件指针); // 例子写入一个结构体 fwrite(s, sizeof(struct Stu), 1, pf);读freadfread(s, sizeof(struct Stu), 1, pf);六、文件的随机读写默认文件是顺序读写从头读到尾随机读写可以跳着读 / 写。三个核心函数fseek移动文件指针ftell返回当前指针位置rewind指针回到文件开头例子fseek(pf, 5, SEEK_SET); // 从开头偏移5个字符 int pos ftell(pf); // 查看当前位置 rewind(pf); // 回到开头七、文件缓冲区理解即可C 语言的文件操作有缓冲区数据先写到内存缓冲区缓冲区满了 / 刷新才会写到磁盘fflush(pf)手动刷新缓冲区fclose关闭文件时自动刷新缓冲区所以文件用完一定要关闭否则数据可能写不进磁盘。八、新手常见错误总结忘记判断fopen返回值文件打开失败直接操作程序崩溃用r打开不存在的文件直接报错用w打开文件原有数据被清空忘记关闭文件造成数据丢失路径写错把\写成了\正确写法\\九、完整小案例学生信息存文件把学生信息写入文件再读出来打印直接运行#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h // 学生结构体 struct Stu { char name[20]; int age; float score; }; int main() { // 1. 写入文件 FILE* pf fopen(student.txt, w); if (pf NULL) { perror(fopen); return 1; } struct Stu s {李四, 19, 98.0}; fprintf(pf, %s %d %.2f, s.name, s.age, s.score); fclose(pf); pf NULL; // 2. 读取文件并打印 pf fopen(student.txt, r); struct Stu t {0}; fscanf(pf, %s %d %f, t.name, t.age, t.score); printf(姓名%s\n年龄%d\n成绩%.2f\n, t.name, t.age, t.score); fclose(pf); pf NULL; return 0; }十、总结背会这几点就够了文件操作三步骤打开 → 读写 → 关闭打开用fopen关闭用fclose必须判断空指针文本读写fputc/fgetc、fputs/fgets、fprintf/fscanf二进制读写fwrite/fread随机读写fseek、ftell、rewind记得关闭文件避免数据丢失这就是 C 语言文件操作的全部基础内容照着代码多敲几遍很快就能掌握总结核心流程打开文件 (fopen)→读写数据→关闭文件 (fclose)必须判断文件指针是否为空读写工具文本用fputc/fgetc/fprintf/fscanf二进制用fwrite/fread关键细节路径写\\、w会清空文件、用完文件必须关闭