当前位置: 首页 > article >正文

STLG_01_17_程序设计C语言 - 文件管理

        在C语言中,文件管理涉及文件的打开、读写、关闭等操作。C语言提供了标准库函数来处理文件操作,其中最常用的函数包括 fopen()fclose()fread()fwrite()fprintf()fscanf() 等。

1. 打开文件 (fopen)

fopen() 用于打开一个文件,并返回一个指向该文件的指针(FILE*)。如果文件打开失败,fopen() 将返回 NULL

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

  • filename:文件路径或文件名。
  • mode:打开文件的模式,常见模式如下:
    • "r":以只读方式打开文件,文件必须存在。
    • "w":以写入方式打开文件,如果文件不存在则创建,如果文件已存在则清空内容。
    • "a":以追加方式打开文件,如果文件不存在则创建,如果文件已存在则在文件末尾追加内容。
    • "r+":以读写方式打开文件,文件必须存在。
    • "w+":以读写方式打开文件,如果文件不存在则创建,如果文件已存在则清空内容。
    • "a+":以读写方式打开文件,如果文件不存在则创建,读取从文件开始,写入在文件末尾追加。

2. 关闭文件 (fclose)

fclose() 用于关闭一个打开的文件,释放与该文件相关联的资源。

int fclose(FILE *stream);

  • stream:指向已打开文件的指针。成功关闭返回 0,失败返回 EOF

3. 读取文件 (fread)

fread() 用于从文件中读取数据。

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

  • ptr:指向存放读取数据的缓冲区的指针。
  • size:每个数据项的大小(字节)。
  • nmemb:要读取的数据项的数量。
  • stream:指向已打开文件的指针。

返回值:实际读取的数据项数量。如果返回值小于 nmemb,则可能发生了错误或到达了文件末尾。

4. 写入文件 (fwrite)

fwrite() 用于将数据写入文件。

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

  • ptr:指向要写入数据的缓冲区的指针。
  • size:每个数据项的大小(字节)。
  • nmemb:要写入的数据项的数量。
  • stream:指向已打开文件的指针。

返回值:实际写入的数据项数量。如果返回值小于 nmemb,则可能发生了错误。

5. 格式化输入输出 (fprintf 和 fscanf)

fprintf() 和 fscanf() 用于格式化文件的输入输出操作。

5.1 fprintf

fprintf() 将格式化的数据写入文件。

int fprintf(FILE *stream, const char *format, ...);

  • stream:指向已打开文件的指针。
  • format:格式化字符串,类似于 printf() 中的格式。
5.2 fscanf

fscanf() 从文件中读取格式化的数据。

int fscanf(FILE *stream, const char *format, ...);

  • stream:指向已打开文件的指针。
  • format:格式化字符串,类似于 scanf() 中的格式。

6. 文件定位 (fseek 和 ftell)

6.1 fseek

fseek() 用于设置文件指针的位置。

int fseek(FILE *stream, long offset, int whence);

  • stream:指向已打开文件的指针。
  • offset:偏移量,表示相对于 whence 的偏移量。
  • whence:起始位置,可以是以下值之一:
    • SEEK_SET:文件开头。
    • SEEK_CUR:当前位置。
    • SEEK_END:文件末尾。
6.2 ftell

ftell() 用于获取文件指针的当前位置。

long ftell(FILE *stream);

  • stream:指向已打开文件的指针。返回值为当前文件指针的位置。

7. 文件结尾检查 (feof)

feof() 用于检查文件指针是否到达文件末尾。

int feof(FILE *stream);

  • stream:指向已打开文件的指针。如果到达文件末尾,返回非零值;否则返回 0

8. 错误检查 (ferror)

ferror() 用于检查文件操作是否发生了错误。

int ferror(FILE *stream);

  • stream:指向已打开文件的指针。如果发生错误,返回非零值;否则返回 0

示例代码

#include <stdio.h>

int main() {
    FILE *file;
    char buffer[100];

    // 打开文件以写入模式
    file = fopen("example.txt", "w");
    if (file == NULL) {
        perror("Failed to open file");
        return 1;
    }

    // 写入数据到文件
    fprintf(file, "Hello, World!\n");
    fclose(file);

    // 打开文件以读取模式
    file = fopen("example.txt", "r");
    if (file == NULL) {
        perror("Failed to open file");
        return 1;
    }

    // 读取数据并输出
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer);
    }

    fclose(file);
    return 0;
}

总结

C语言的文件管理涉及文件的打开、读写、关闭等操作,常用的函数包括 fopen()fclose()fread()fwrite()fprintf()fscanf() 等。通过这些函数,可以实现对文件的灵活管理。


http://www.kler.cn/a/472454.html

相关文章:

  • 和为0的四元组-蛮力枚举(C语言实现)
  • Django学习笔记之数据库(一)
  • C++语言的并发编程
  • 晨辉面试抽签和评分管理系统之一:考生信息管理和编排
  • 【生物信息】如何使用 h5py 读取 HDF5 格式文件中的数据并将其转换为 NumPy 数组
  • 成为LabVIEW自由开发者
  • 【Rust自学】10.8. 生命周期 Pt.4:方法定义中的生命周期标注与静态生命周期
  • 解决npm报错:sill idealTree buildDeps
  • 计算机网络(第8版)第3章课后习题--透明传输
  • uniapp web-view调整修改高度设置
  • 25/1/4 算法笔记<强化学习> 生成对抗模仿学习
  • C++ this指针(八股总结)
  • k8s技术架构
  • MySQL 数据库的高可用性架构设计
  • GPIB通讯C#实战:控制Keysight 34461万用表连续采集1000个测量电压点
  • YOLOv10-1.1部分代码阅读笔记-checks.py
  • JavaEE初阶——计算机工作原理
  • 常见的注解
  • 探索Linux Kernel:早期I/O内存映射的奥秘
  • Unity 2d描边基于SpriteRender,高性能的描边解决方案
  • Elasticsearch:Query rules 疑难解答
  • Golang学习笔记_17——方法
  • 【Leetcode】单词拆分:dfs解法、dp解法
  • 计算机网络之---物理层的基本概念
  • 大数据hadoop和hive能支持多大
  • Linux性能优化策略:让你的系统运行如飞