C语言文件操作详解:从打开保存到顺序读写

小石头
小石头
发布时间:2026-10-16| 5人浏览过
原创

C语言通过标准输入输出库实现数据的持久化存储。本文详解文件操作核心概念,解析FILE指针原理,演示fopen与fclose的标准用法,并梳理顺序读写的常用函数,帮助开发者高效处理磁盘文件。

为什么使用文件

在程序设计过程中,内存中的数据通常在程序运行结束后丢失。若希望保留通讯录等信息,直到用户主动删除才不复存在,就需要实现数据持久化。将数据直接存放在电脑硬盘的文件中,是实现持久化最常用的方法之一。

什么是文件

在程序设计的语境下,文件通常分为两类:

  • 程序文件:包含源程序(后缀.c)、目标文件(Windows下.obj)和可执行程序(Windows下.exe),用于存放编译后的代码或指令。
  • 数据文件:程序运行时读写的数据,如程序运行需要读取的输入文件或输出结果的文件。本章重点讨论此类数据文件。

文件名标识

每个文件都需要一个唯一的标识以便用户引用。完整的文件名由三部分组成:

  1. 文件路径
  2. 文件名主干
  3. 文件后缀

例如:c:\code\test.txt。为了方便起见,通常将这一完整标识简称为“文件名”。

文件的打开和关闭

在C语言中,对文件的所有操作都基于一个关键概念:文件指针。每个被使用的文件在内存中都会开辟一个信息区,保存文件名、状态及当前位置等信息。这些信息封装在一个名为 FILE 的结构体变量中。

文件指针与FILE结构

FILE 类型由系统声明,不同编译器下的内部结构可能略有差异。以常见的Visual Studio为例,其基础结构如下:

struct _iobuf {
    char *_ptr;
    int _cnt;
    char *_base;
    int _flag;
    int _file;
    int _charbuf;
    int _bufsiz;
    char *_tmpfname;
};
typedef struct _iobuf FILE;

开发者只需定义一个指向该类型的指针变量即可开始操作:

FILE* pf; // 文件指针变量

通过 pf 指向文件的信息区,程序便能访问对应的磁盘文件。

fopen与fclose函数

文件使用前必须先打开,使用后必须关闭,以确保数据写入磁盘并释放内存资源。

第1步:打开文件 (fopen)

目的:建立内存与磁盘文件的关联。

原型:

FILE * fopen ( const char * filename, const char * mode );

参数说明:filename为文件名,mode为打开模式(如 r只读、w只写、a追加等)。初学者建议熟练掌握前三种模式即可。

第2步:关闭文件 (fclose)

目的:刷新缓冲区并将内存中的数据永久写入磁盘,回收 FILE 结构体占用的内存。

原型:

int fclose ( FILE * stream );

如果成功关闭,返回 0;否则返回 EOF。

完整实例

以下代码演示了如何创建一个新文件,写入内容并安全关闭:

/* fopen fclose example */
#include <stdio.h>

int main ()
{
    FILE * pFile;
    
    // 1. 打开文件:以写入模式创建或清空myfile.txt
    pFile = fopen ("myfile.txt","w");
    
    // 2. 检查文件是否成功打开
    if (pFile!=NULL)
    {
        fputs ("fopen example",pFile); // 写入内容
        
        // 3. 关闭文件
        fclose (pFile);
    }
    return 0;
}

文件的顺序读写

根据读写方式的不同,文件操作分为顺序读写和随机读写。本节介绍最基础的顺序读写函数,它们依次处理字符、字符串或格式化数据。

使用上述任何读写函数时,务必包含标准头文件:<stdio.h>。

总结

掌握C语言文件操作是进行数据持久化的基础。理解 FILE 指针的作用,规范使用 fopen 和 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 算法库。