C语言文件操作基础:打开、关闭与顺序读写详解

晚来风
晚来风
发布时间:2026-10-16| 5人浏览过
原创

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语言文件读写技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。