creatfile c语言

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 C语言 正文

核心概念:文件指针 (FILE Pointer)

在 C 语言中,所有文件操作都是通过一个指向 FILE 结构体的指针来完成的,你可以把这个 FILE 指针想象成一个“遥控器”,你通过这个遥控器来对文件进行各种操作(打开、读取、写入、关闭等)。

creatfile c语言
(图片来源网络,侵删)

FILE 结构体在 <stdio.h> 中被定义,但我们通常不需要关心它的具体内部细节,只需要知道如何使用 FILE* 类型的指针即可。

打开文件:fopen() 函数

要操作文件,首先必须用 fopen() 函数将其打开。

函数原型:

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

参数:

creatfile c语言
(图片来源网络,侵删)
  1. filename: 字符串,表示你要打开的文件名,可以是文件名(如 data.txt),也可以包含路径(如 C:/projects/data.txt/home/user/data.txt)。注意:在 Windows 中路径分隔符用反斜杠 \,但在 C 字符串中 \ 是转义字符,所以需要写成 \\ 或者使用正斜杠 。
  2. mode: 字符串,指定文件的打开模式,以下是几种最常用的模式:
模式 含义 如果文件不存在 如果文件存在
"r" 只读 失败,返回 NULL 打开,文件指针指向开头
"w" 只写 创建新文件 清空文件内容,文件指针指向开头
"a" 追加 创建新文件 打开,文件指针指向末尾
"r+" 读写 失败,返回 NULL 打开,文件指针指向开头
"w+" 读写 创建新文件 清空文件内容,文件指针指向开头
"a+" 读写 创建新文件 打开,文件指针指向末尾

返回值:

  • 成功:返回一个指向 FILE 结构体的指针。
  • 失败:返回 NULL,失败的原因可能是文件不存在、路径错误、没有权限等。

重要提示: 每次使用 fopen() 后,都应该立即检查返回值是否为 NULL,以确保文件成功打开。

写入文件:fprintf()fputs()

文件打开后,就可以向其中写入数据了。

fprintf() 函数

fprintf() 的作用和 printf() 非常相似,只是 printf() 是将数据输出到控制台,而 fprintf() 是将数据格式化输出到文件

creatfile c语言
(图片来源网络,侵删)

函数原型:

int fprintf(FILE *stream, const char *format, ...);
  • stream: 文件指针(即 fopen() 的返回值)。
  • format: 格式化字符串,和 printf() 一样。
  • 可变参数,要写入的数据。

fputs() 函数

fputs() 用于向文件写入一个字符串。

函数原型:

int fputs(const char *str, FILE *stream);
  • str: 要写入的字符串。
  • stream: 文件指针。

关闭文件:fclose() 函数

当你完成所有文件操作后,必须使用 fclose() 函数关闭文件,这是一个非常重要的步骤!

为什么必须关闭?

  1. 释放资源:操作系统为每个打开的文件分配资源(如缓冲区),关闭文件会释放这些资源。
  2. 确保数据写入:当你写入数据时,数据通常先被存储在内存缓冲区中,fclose() 会确保所有缓冲区中的数据都被真正写入到磁盘文件中,如果程序异常终止而没有关闭文件,可能会导致数据丢失。

函数原型:

int fclose(FILE *stream);
  • stream: 要关闭的文件指针。

完整示例:创建并写入文件

下面是一个完整的 C 语言程序,它创建一个名为 mylog.txt 的文件,并向其中写入一些内容。

#include <stdio.h>
#include <stdlib.h> // 用于 exit() 函数
int main() {
    // 1. 定义一个文件指针
    FILE *fp;
    // 2. 使用 fopen() 以 "只写" 模式打开文件
    // 如果文件不存在,fopen 会自动创建它
    fp = fopen("mylog.txt", "w");
    // 3. 检查文件是否成功打开
    if (fp == NULL) {
        printf("无法创建或打开文件 mylog.txt\n");
        // 如果打开失败,直接退出程序
        exit(1); 
    }
    printf("文件 mylog.txt 创建/打开成功!\n");
    // 4. 使用 fprintf() 向文件写入格式化数据
    fprintf(fp, "这是一行日志信息,\n");
    fprintf(fp, "当前系统时间: %s\n", __DATE__); // __DATE__ 是一个预定义宏,表示当前日期
    // 5. 使用 fputs() 向文件写入一个字符串
    fputs("这是另一行使用 fputs 写入的文本,\n", fp);
    // 6. 关闭文件
    fclose(fp);
    printf("数据已成功写入文件,并已关闭文件,\n");
    return 0;
}

如何编译和运行:

  1. 将以上代码保存为 create_file.c
  2. 打开终端或命令提示符,使用 gcc 进行编译:
    gcc create_file.c -o create_file
  3. 运行生成的可执行文件:
    ./create_file
  4. 程序运行后,你会发现当前目录下多了一个名为 mylog.txt 的文件,用文本编辑器打开它,内容会是:
    这是一行日志信息。
    当前系统时间: Oct 26 2025
    这是另一行使用 fputs 写入的文本。

进阶:追加内容到文件

如果你想向一个已存在的文件末尾添加内容,而不是覆盖它,应该使用 "a" (append) 模式。

示例代码:

#include <stdio.h>
int main() {
    FILE *fp;
    // 以 "追加" 模式打开文件
    // 如果文件不存在,会创建;如果存在,会在末尾追加
    fp = fopen("mylog.txt", "a");
    if (fp == NULL) {
        printf("无法打开文件 mylog.txt 进行追加,\n");
        return 1;
    }
    // 向文件追加新内容
    fprintf(fp, "这条信息是在文件末尾追加的,\n");
    // 关闭文件
    fclose(fp);
    printf("内容已成功追加到 mylog.txt,\n");
    return 0;
}

再次运行这个程序后,mylog.txt 的内容会变成:

这是一行日志信息。
当前系统时间: Oct 26 2025
这是另一行使用 fputs 写入的文本。
这条信息是在文件末尾追加的。
步骤 函数 作用 示例
打开 fopen() 获取文件操作权限,创建或打开文件 FILE *fp = fopen("data.txt", "w");
检查 if (fp == NULL) 确保文件操作成功 if (fp == NULL) { /* 处理错误 */ }
写入 fprintf(), fputs() 向文件写入数据 fprintf(fp, "Hello");
关闭 fclose() 释放资源,确保数据写入磁盘 fclose(fp);

这就是在 C 语言中创建和写入文件的基本流程,掌握了这些,你就可以开始进行文件 I/O 操作了。

-- 展开阅读全文 --
头像
织梦系统如何更改标题图片?
« 上一篇 03-02
SQLCipher C语言如何实现数据加密与解密?
下一篇 » 03-02

相关文章

取消
微信二维码
支付宝二维码

目录[+]