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

fopen的概念和使用方法

fopen 是 C 语言标准库函数之一,用于打开文件并返回一个文件指针,该指针随后可以用于其他文件操作,如读取、写入或关闭文件。

函数原型:

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

参数说明:

  • filename:指向字符串的指针,该字符串包含要打开的文件的名称。
  • mode:指向字符串的指针,该字符串指定文件打开的模式。

文件打开模式:

以下是一些常用的文件打开模式:

  • "r":以只读方式打开文件。文件必须存在。
  • "w":以写入方式打开文件。如果文件存在,则其内容会被截断(即删除所有内容)。如果文件不存在,则会创建一个新文件。
  • "a":以追加方式打开文件。如果文件存在,写入操作将在文件末尾进行。如果文件不存在,则会创建一个新文件。
  • "r+":以读写方式打开文件。文件必须存在。
  • "w+":以读写方式打开文件。如果文件存在,则其内容会被截断。如果文件不存在,则会创建一个新文件。
  • "a+":以读写方式打开文件。如果文件存在,写入操作将在文件末尾进行。如果文件不存在,则会创建一个新文件。
    此外,还可以在模式字符串中包含一个 b 来指示二进制模式(例如 "rb""wb""ab" 等),这在某些系统(如 Windows)中是必要的,以区分文本文件和二进制文件。

返回值:

  • 成功:返回一个指向 FILE 类型的指针,该指针用于后续的文件操作。
  • 失败:返回 NULL,并设置全局变量 errno 来指示错误类型。

使用案例:

以下是一个使用 fopen 函数的例子:

#include <stdio.h>
int main() {
    FILE *filePtr;
    const char *filename = "example.txt";
    const char *mode = "w";  // 打开文件用于写入
    // 尝试打开文件
    filePtr = fopen(filename, mode);
    // 检查文件是否成功打开
    if (filePtr == NULL) {
        perror("Error opening file");
        return -1;
    }
    // 文件操作...
    // 例如,写入一些内容到文件
    fprintf(filePtr, "Hello, World!\n");
    // 关闭文件
    fclose(filePtr);
    return 0;
}

在这个例子中,我们尝试以写入模式打开名为 “example.txt” 的文件。如果文件成功打开,我们使用 fprintf 函数写入一些文本,然后使用 fclose 函数关闭文件。

注意事项:

  • 使用 fopen 打开文件后,应始终检查返回的文件指针是否为 NULL,以确定文件是否成功打开。
  • 在完成文件操作后,应使用 fclose 函数关闭文件,以释放与之关联的资源。
  • 如果以写入模式("w""w+""a""a+")打开文件,而文件已经存在,则其内容将被截断或覆盖,取决于指定的模式。

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

相关文章:

  • 【VBA】EXCEL - VBA 创建 Sheet 表的 6 种方法,以及注意事项
  • tar.gz压缩文件在linux上解压异常问题:gzip:stdin:invalid compressed data
  • 【2024年-9月-21日-开源社区openEuler实践记录】PilotGo:简化运维管理的开源利器
  • PCL点云库入门——PCL库点云滤波算法之半径滤波(RadiusOutlierRemoval)
  • GPU 进阶笔记(二):华为昇腾 910B GPU
  • 蓝桥杯(Java)(ing)
  • 正则表达式 - 使用总结
  • 多个微服务 Mybatis 过程中出现了Invalid bound statement (not found)的特殊问题
  • 系统分析师案例分析100问
  • 【Leetcode 热题 100】78. 子集
  • 提升生产力工具
  • ShaderJoy ——一种可交互的翻页效果【GLSL】
  • OpenCV-Python实战(11)——边缘检测
  • Kafka的acks机制和ISR列表
  • [Win32/WTL]_[初级]_[如何销毁自定义控件]
  • Axure RP 8安装(内带安装包)
  • python 打印圣诞树
  • AI笔记-查漏补缺
  • 3.4欧拉角插补
  • Datawhale-AI冬令营二期
  • leetcode hot 100 单词搜索
  • 【Axure高保真原型】输入框控制标签
  • 探索Spring Cloud Config:构建高可用的配置中心
  • 5.npm包
  • 如何配置线程池参数,才能创建性能最好、最稳定的Spring异步线程池?
  • StarRocks元数据无法合并