C++(fprintf())



fprintf() 是 C 和 C++ 中用于格式化输出到文件的标准库函数。它的功能类似于 printf(),但与 printf() 不同的是,fprintf() 将格式化后的数据输出到指定的文件,而不是标准输出流(通常是屏幕)。

1. 函数定义

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

参数:

  • stream:一个 FILE* 类型的指针,指向目标文件。如果要输出到标准输出流,可以使用 stdout;如果要输出到标准错误流,可以使用 stderr
  • format:一个格式化字符串,指定输出的格式。它可以包含普通字符(将直接写入文件)以及格式说明符(以 % 开头的字符串,用于指定如何显示后面的参数)。
  • ...:格式化字符串中指定的变量,可以是任意数量的参数,具体取决于 format 字符串中包含的格式说明符。

返回值:

  • 返回成功写入的字符数(不包括终止的空字符 '\0')。
  • 如果发生错误,返回负值。


2. 常见格式说明符

  • %d:输出一个整数。
  • %f:输出一个浮动点数。
  • %s:输出一个字符串。
  • %c:输出一个字符。
  • %x:输出一个十六进制数。


3. 示例代码

#include <cstdio>

int main() {
    FILE *file = fopen("example.txt", "w");
    if (file == nullptr) {
        perror("Error opening file");
        return 1;
    }

    int age = 25;
    double height = 5.9;
    const char *name = "John";

    fprintf(file, "Name: %s\n", name);         // 输出字符串
    fprintf(file, "Age: %d\n", age);           // 输出整数
    fprintf(file, "Height: %.1f\n", height);   // 输出浮动点数,保留1位小数

    fclose(file);  // 关闭文件
    return 0;
}

说明:

  1. fopen("example.txt", "w") 用于打开文件 example.txt,以写入模式 (w) 打开。若文件不存在,会创建该文件。如果文件已存在,文件内容会被覆盖。
  2. fprintf(file, "Name: %s\n", name) 输出格式化的字符串 "Name: John\n" 到文件。
  3. fclose(file) 用于关闭文件。

错误处理:

  • 如果文件打开失败,fopen 会返回 nullptr,这时可以通过 perror()errno 查看错误信息。
  • 如果 fprintf 无法写入文件(如文件没有写权限),它会返回负值,表示发生了错误。


4. 适用场景

  • 将程序的输出结果写入日志文件、配置文件等。
  • 格式化输出可以让你控制输出的内容格式(例如,控制小数点后位数、输出宽度等)。

fprintf() 是一个非常常用的函数,尤其在处理文件I/O操作时,能够帮助开发者高效地将信息写入文件并保持格式化。



posted @ 2024-12-05 15:32  做梦当财神  阅读(10)  评论(0编辑  收藏  举报