初学C语言文件操作:从0到1,读懂文件并上手实操

📅 发布时间:2026/7/7 17:52:14 👁️ 浏览次数:
初学C语言文件操作:从0到1,读懂文件并上手实操
零基础吃透 C 语言文件操作从概念到实战新手也能秒懂作为刚接触 C 语言的你是不是发现写的程序一关掉所有数据就 “消失” 了比如做的计算器、成绩统计程序下次打开又要重新输入数据 —— 这是因为程序运行时的数据只存在内存里而文件操作就是让数据 “永久保存” 到硬盘的核心技能。今天这篇文章我会用最通俗的语言、最基础的代码带你从 0 学会 C 语言的文件和文件操作全程无废话新手也能跟着做。一、先搞懂C 语言里的 “文件” 是什么在电脑里txt 文档、图片、视频都是文件但 C 语言对文件的定义很简单文件是存储在硬盘等外部设备上的一组数据的集合。对初学者来说我们只需要关注两种文件文本文件用记事本打开能直接看懂的文件比如.txt内容是字符字母、数字、标点比如存成绩的文件写着 “90 85 78”二进制文件直接打开是乱码的文件比如.jpg、.exe用 0 和 1 存储数据新手先学文本文件就够了。而操作文件的 “桥梁” 是文件指针可以理解成程序通过这个指针 “找到” 要操作的文件就像我们用鼠标指针点击文件一样。文件指针的固定写法是FILE *指针名;比如FILE *fp;。二、文件操作三步曲打开→操作→关闭所有文件操作都逃不开这三步就像我们用记事本写东西先打开记事本打开文件→ 写字 / 读字操作文件→ 关闭记事本关闭文件。第一步打开文件fopen 函数打开文件用fopen函数这是必须先掌握的 “敲门砖”语法记牢c运行FILE *fopen(文件名/路径, 打开模式);1. 关键参数打开模式新手必记 4 种打开模式决定了你能对文件做什么千万别用错模式含义注意事项r只读只能读文件内容文件不存在则打开失败w只写只能写内容到文件文件不存在则创建存在则清空原有内容a追加在文件末尾写内容文件不存在则创建不会清空原有内容r读写既能读也能写文件不存在则打开失败2. 正确打开文件一定要判断是否成功新手最容易犯的错直接操作打开失败的文件指针导致程序崩溃。正确写法如下c运行#include stdio.h // 文件操作函数都在这个头文件里必须加 int main() { // 打开当前文件夹的test.txt只读模式 FILE *fp fopen(test.txt, r); // 判断是否打开成功NULL代表失败 if (fp NULL) { printf(文件打开失败\n); return 1; // 程序异常退出 } // 这里写后续操作代码 return 0; }第二步核心操作 —— 读文件和写文件打开文件后核心就是 “写”把程序数据存到文件和 “读”把文件数据拿到程序推荐新手先学这几组最实用的函数1. 写文件3 个函数按需选择1fputc写单个字符把一个字符写入文件比如写 “Hello”c运行#include stdio.h int main() { // 只写模式打开不存在则创建 FILE *fp fopen(test.txt, w); if (fp NULL) { printf(打开失败\n); return 1; } // 逐个写入字符 fputc(H, fp); fputc(e, fp); fputc(l, fp); fputc(l, fp); fputc(o, fp); fclose(fp); // 记得关闭文件 printf(写入成功\n); return 0; }运行后打开 test.txt就能看到 “Hello”。2fputs写整行字符串比 fputc 高效直接写一行文字c运行#include stdio.h int main() { FILE *fp fopen(test.txt, w); if (fp NULL) return 1; // 写入字符串\n是换行符 fputs(C语言文件操作真简单\n, fp); fputs(新手也能轻松学会, fp); fclose(fp); return 0; }3fprintf格式化写入最常用和printf用法几乎一样只是把内容写到文件里适合存带格式的数据比如姓名 成绩c运行#include stdio.h int main() { // 追加模式避免清空原有内容 FILE *fp fopen(student.txt, a); if (fp NULL) return 1; // 写入学生信息 fprintf(fp, 姓名%s成绩%.1f\n, 小明, 95.5); fprintf(fp, 姓名%s成绩%.1f\n, 小红, 88.0); fclose(fp); printf(学生信息写入成功\n); return 0; }2. 读文件对应 3 个函数和写文件一一对应1fgetc读单个字符从文件里逐个读字符直到读完c运行#include stdio.h int main() { FILE *fp fopen(test.txt, r); if (fp NULL) return 1; int ch; // 用int接收因为要判断文件结束符EOF值为-1 // 循环读取直到读到文件末尾 while ((ch fgetc(fp)) ! EOF) { printf(%c, ch); // 把读到的字符输出到控制台 } fclose(fp); return 0; }2fgets读整行字符串一次读一行适合读文本文件的整行内容c运行#include stdio.h int main() { FILE *fp fopen(student.txt, r); if (fp NULL) return 1; char buf[100]; // 存读取的内容 // 循环读所有行fgets返回NULL代表读完 while (fgets(buf, 100, fp) ! NULL) { printf(%s, buf); } fclose(fp); return 0; }3fscanf格式化读取最常用和fprintf对应按格式读文件里的数据格式必须和写入时一致c运行#include stdio.h int main() { FILE *fp fopen(student.txt, r); if (fp NULL) return 1; char name[20]; float score; // 按格式读取直到文件末尾 while (fscanf(fp, 姓名%s成绩%.1f\n, name, score) ! EOF) { printf(读取到%s 的成绩是 %.1f\n, name, score); } fclose(fp); return 0; }第三步关闭文件fclose 函数这步千万不能忘打开文件会占用系统资源不关闭可能导致文件损坏、数据丢失。语法超简单c运行fclose(文件指针); // 比如fclose(fp);三、新手必避的 3 个坑用 “w” 模式清空文件想保留原有内容加新内容一定要用 “a” 模式别用 “w”忘记判断文件打开成功路径写错、文件不存在“r” 模式都会导致打开失败必须加if (fp NULL)判断操作后不关闭文件养成 “打开→操作→关闭” 的习惯哪怕程序很短。四、实战案例简易成绩记录本结合上面的知识点写一个能 “存成绩” 和 “查成绩” 的小程序新手直接复制就能运行c运行#include stdio.h // 写入成绩 void writeScore() { FILE *fp fopen(score.txt, a); if (fp NULL) { printf(文件打开失败\n); return; } char name[20]; float score; printf(请输入姓名); scanf(%s, name); printf(请输入成绩); scanf(%f, score); fprintf(fp, 姓名%s成绩%.1f\n, name, score); printf(保存成功\n); fclose(fp); } // 查看成绩 void readScore() { FILE *fp fopen(score.txt, r); if (fp NULL) { printf(暂无成绩记录\n); return; } char buf[100]; printf(\n 成绩列表 \n); while (fgets(buf, 100, fp) ! NULL) { printf(%s, buf); } printf(\n); fclose(fp); } int main() { int choice; while (1) { printf(\n【成绩记录本】\n); printf(1. 录入成绩\n2. 查看成绩\n3. 退出\n); printf(请选择); scanf(%d, choice); switch (choice) { case 1: writeScore(); break; case 2: readScore(); break; case 3: printf(退出程序\n); return 0; default: printf(输入错误请重新选\n); } } }运行后你可以录入多个学生的成绩关掉程序再打开成绩依然存在 —— 这就是文件操作的核心价值数据持久化。总结C 语言文件操作核心是 “打开fopen→ 操作读写→ 关闭fclose” 三步文件指针是操作文件的关键写文件常用 fprintf格式化读文件常用 fscanf格式化新手优先掌握这两个函数避开 “忘判打开失败、用错模式、忘关文件” 三个坑多动手运行代码很快就能熟练。