非常好 👍
这次我们做一份完整、系统、清晰的 C语言文件输入输出笔记,包含两大类文件:
🧾 文本文件(text file)
💾 二进制文件(binary file)
这份内容适合你长期保存复习。
📘 C语言文件读写笔记(完整版)
一、文件操作的基本流程
C 语言所有文件操作都依赖 <stdio.h>
基本步骤:
-
定义文件指针
-
打开文件
-
读写文件
-
关闭文件
二、文件打开模式
| 模式 |
说明 |
"r" |
只读打开(文件必须存在) |
"w" |
写入(文件存在则清空,不存在则创建) |
"a" |
追加写入(写入到末尾) |
"r+" |
读写(文件必须存在) |
"w+" |
读写(创建新文件或清空旧文件) |
"a+" |
读写(文件存在则追加) |
"rb", "wb", "ab" |
同上,但用于二进制文件 |
三、文本文件的读写
📖 写入文本文件
#include <stdio.h>
int main() {
FILE *fp = fopen("output.txt", "w");
if (!fp) {
printf("打开文件失败!\n");
return 1;
}
fprintf(fp, "Hello, world!\n");
fprintf(fp, "数字:%d\n", 123);
fputs("这是另一行文字。\n", fp);
fclose(fp);
return 0;
}
📘 说明
📥 读取文本文件
#include <stdio.h>
int main() {
FILE *fp = fopen("output.txt", "r");
if (!fp) {
printf("文件打开失败!\n");
return 1;
}
char line[100];
while (fgets(line, sizeof(line), fp)) { // 一次读一行
printf("%s", line);
}
fclose(fp);
return 0;
}
📘 说明
-
fscanf(fp, "%d", &x):读格式化数据
-
fgets(line, size, fp):读一整行字符串
-
feof(fp):可判断是否到文件结尾
四、二进制文件的读写
二进制文件保存的是原始内存数据,速度快,不可直接用文本编辑器查看。
💾 写入二进制文件(fwrite)
#include <stdio.h>
int main() {
FILE *fp = fopen("data.bin", "wb"); // 以二进制方式写入
if (!fp) {
printf("打开文件失败!\n");
return 1;
}
int nums[] = {10, 20, 30, 40, 50};
fwrite(nums, sizeof(int), 5, fp); // 写入5个int
fclose(fp);
return 0;
}
💾 读取二进制文件(fread)
#include <stdio.h>
int main() {
FILE *fp = fopen("data.bin", "rb"); // 以二进制方式读取
if (!fp) {
printf("打开文件失败!\n");
return 1;
}
int nums[5];
fread(nums, sizeof(int), 5, fp); // 从文件读取5个int
for (int i = 0; i < 5; i++) {
printf("nums[%d] = %d\n", i, nums[i]);
}
fclose(fp);
return 0;
}
五、读写结构体的例子(重点)
#include <stdio.h>
typedef struct {
char name[20];
int age;
double score;
} Student;
int main() {
Student stu1 = {"Alice", 20, 95.5};
Student stu2;
// 写入
FILE *fp = fopen("student.bin", "wb");
fwrite(&stu1, sizeof(Student), 1, fp);
fclose(fp);
// 读取
fp = fopen("student.bin", "rb");
fread(&stu2, sizeof(Student), 1, fp);
fclose(fp);
printf("姓名: %s\n年龄: %d\n分数: %.1f\n", stu2.name, stu2.age, stu2.score);
return 0;
}
🧠 这种方法常用于保存游戏存档、数据库记录、配置文件等。
六、文本 vs 二进制 文件对比总结
| 对比项 |
文本文件 |
二进制文件 |
| 读写函数 |
fprintf, fscanf, fgets, fputs |
fwrite, fread |
| 内容格式 |
可读的 ASCII 字符 |
原始字节数据 |
| 文件大小 |
通常较大(有换行和字符编码) |
较小、紧凑 |
| 可直接查看 |
✅ 是 |
❌ 否 |
| 速度 |
较慢 |
较快 |
| 适合 |
配置、日志、报告 |
图片、音频、结构体数据 |
七、补充:安全与检测
-
判断文件是否打开成功:
-
判断是否到达文件结尾:
while (!feof(fp)) { ... }
-
关闭文件(一定要):
八、示意图 🧭
程序内存 ←→ 文件指针 ←→ 磁盘文件
↑
fread / fwrite (二进制)
fscanf / fprintf (文本)
✅ 总结口诀
fopen 打开先,
fprintf/fscanf 写与读;
fwrite/fread 传二进,
fclose 结束莫忘记。
非常好 👍
这次我们做一份完整、系统、清晰的 C语言文件输入输出笔记,包含两大类文件:
这份内容适合你长期保存复习。
📘 C语言文件读写笔记(完整版)
一、文件操作的基本流程
C 语言所有文件操作都依赖
<stdio.h>基本步骤:
定义文件指针
打开文件
读写文件
文本:
fprintf,fscanf,fgets,fputs二进制:
fwrite,fread关闭文件
二、文件打开模式
"r""w""a""r+""w+""a+""rb","wb","ab"三、文本文件的读写
📖 写入文本文件
📘 说明
fprintf():格式化写入(类似printf)fputs():直接写字符串📥 读取文本文件
📘 说明
fscanf(fp, "%d", &x):读格式化数据fgets(line, size, fp):读一整行字符串feof(fp):可判断是否到文件结尾四、二进制文件的读写
二进制文件保存的是原始内存数据,速度快,不可直接用文本编辑器查看。
💾 写入二进制文件(
fwrite)💾 读取二进制文件(
fread)五、读写结构体的例子(重点)
🧠 这种方法常用于保存游戏存档、数据库记录、配置文件等。
六、文本 vs 二进制 文件对比总结
fprintf,fscanf,fgets,fputsfwrite,fread七、补充:安全与检测
判断文件是否打开成功:
判断是否到达文件结尾:
关闭文件(一定要):
八、示意图 🧭
✅ 总结口诀