C语言文件操作基础:打开、关闭与顺序读写详解
C语言通过文件接口将内存数据持久化至磁盘,核心依赖于标准库中的FILE指针。掌握fopen的安全打开方式、缓冲区管理机制以及fgetc/fgets等顺序读写函数,是进行高效数据存储与传输的基础。
一、 为什么使用文件
程序运行时产生的数据通常存储在内存中,断电后即消失。为了实现数据的持久化保存,我们需要将数据写入电脑硬盘的文件中。在程序设计中,文件主要分为两类:
- 程序文件:包括源文件(
.c)、目标文件(.obj)和可执行程序(.exe)。 - 数据文件:程序运行时读写的数据文件,如文本文件或二进制文件。
文件名由文件路径、文件名主干和文件后缀组成,例如:c:\\code\\test.txt。
二、 文件的操作机制
第1步:理解文件指针 FILE*
C语言通过一个名为FILE的结构体变量来维护文件的相关信息,包括文件名、状态、当前读写位置等。这个结构体的指针被称为文件指针。

系统会自动创建并填充该结构体,用户只需通过指针即可访问文件。定义方式为:
FILE* pf; // 文件指针变量
第2步:打开与关闭文件
在进行任何读写操作前,必须先打开文件;操作完成后,必须关闭以释放资源。
1. 打开文件 fopen

fopen函数的原型为:FILE *fopen(const char *filename, const char *mode)。
常用模式说明:
"w":写文件。若文件不存在则创建,存在则清空内容。"r":读文件。文件必须存在,否则返回空指针。
2. 关闭文件 fclose

每次成功打开文件后,建议在最后调用fclose(pf);并将指针置为NULL,防止野指针问题。
第3步:标准流概念
C程序启动时默认打开三个标准流:
stdin:标准输入(键盘)stdout:标准输出(屏幕)stderr:标准错误(屏幕)
三、 文件的顺序读写操作
C语言提供了一系列针对字符和字符串的读写函数,按顺序依次执行操作。
第4步:写入单个字符 fputc

fputc用于向文件写入一个字符。当使用"w"模式时,原有内容会被清除。
#include<stdio.h>
int main()
{
FILE *pf = fopen("test.dat", "w");
if (pf == NULL)
{
perror("fopen");
return 1;
}
// 写入字符 'b', 'i', 't'
fputc('b', pf);
fputc('i', pf);
fputc('t', pf);
fclose(pf);
pf = NULL;
return 0;
}
第5步:读取单个字符 fgetc

fgetc从文件中读取一个字符,返回其ASCII值;若读取失败或到达文件末尾,返回EOF(通常为-1)。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
FILE *pf = fopen("test.dat", "r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
// 读取一个字符
int ret = fgetc(pf);
printf("%c", ret);
fclose(pf);
pf = NULL;
return 0;
}
第6步:写入字符串 fputs

fputs用于写入字符串,不会自动添加换行符,需手动控制。
#include<stdio.h>
int main()
{
FILE *pf = fopen("test.dat", "w");
if (pf == NULL)
{
perror("fopen");
return 1;
}
// 写入多行字符串
fputs("abcdef\n", pf);
fputs("desfgf\n", pf);
fclose(pf);
pf = NULL;
return 0;
}
第7步:读取字符串 fgets

fgets(arr, size, stream)从文件中读取最多 size-1 个字符存入数组,并在末尾自动添加结束符/0。
#include<stdio.h>
int main()
{
char arr[10] = { 0 };
FILE *pf = fopen("test.dat", "r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
// 读取指定长度
fgets(arr, 4, pf);
printf("%s", arr);
fclose(pf);
pf = NULL;
return 0;
}
注意:size参数决定了读取的最大字节数(含/0),因此实际读取的字符数比参数小1。
四、 总结
本节介绍了C语言文件操作的核心流程:通过FILE指针定位文件,使用fopen安全打开,利用fputc/fgets系列函数进行顺序读写,并通过fclose释放资源。在实际开发中,务必检查文件打开是否成功,避免非法内存访问。
以上就是C语言文件操作基础内容的详细内容,更多关于C语言文件读写技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









