C++ fprintf()

fprintf() 原型

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

fprintf() 函数将 format 指向的字符串写入 stream 指向的流。字符串 format 可能包含以 % 开头的格式说明符,这些说明符将被传递给 fprintf() 函数的变量的值替换。

它定义在 <cstdio> 头文件中。

fprintf() 参数

  • stream:指向输出文件流的指针,内容将写入该流。
  • format:指向以 null 结尾的字符串的指针,该字符串将被写入文件流。它由字符和以 % 开头的可选格式说明符组成。

    格式说明符将被格式字符串后面的相应变量的值替换。

    格式说明符包含以下部分

    • 前导 % 符号
    • 标志:可选的一个或多个标志,用于修改转换行为。
      • -:在字段内左对齐结果。默认情况下是右对齐。
      • +:结果的符号将附加在值的前面,即使是正数结果。
      • 空格:如果没有符号,则在结果前面附加一个空格。
      • #:执行转换的替代形式。
      • 0:用于整数和浮点数。用前导零填充数字而不是空格。
    • 宽度:一个可选的 * 或整数值,用于指定最小字段宽度。
    • 精度:一个可选字段,由 . 后跟 * 或整数或为空组成,用于指定精度。
    • 长度:一个可选长度修饰符,用于指定参数的大小。
    • 说明符:一个转换格式说明符。可用的格式说明符如下
      格式说明符 描述
      % 打印 %
      c 写入单个字符
      s 写入字符串
      d 或 i 带符号整数转换为十进制表示
      o 将无符号整数转换为八进制表示
      X 或 x 将无符号整数转换为十六进制表示
      u 将无符号整数转换为十进制表示
      F 或 f 将浮点数转换为十进制表示
      E 或 e 将浮点数转换为十进制指数表示法
      A 或 a 将浮点数转换为十六进制指数
      G 或 g 将浮点数转换为十进制或十进制指数表示法
      n 返回函数本次调用到目前为止写入的字符数。结果将写入参数指向的值。
      p 写入一个实现定义的字符序列,该序列定义一个指针。

      因此,格式说明符的一般格式为:%[flags][width][.precision][length]specifier

  • …:其他附加参数,指定要打印的数据。它们根据格式说明符按顺序出现。

fprintf() 返回值

如果成功,fprintf() 函数返回写入的字符数。失败时返回负值。

示例:fprintf() 函数如何工作

#include <cstdio>

int main()
{
    FILE *fp;
    fp = fopen("example.txt","w");
    char lang[5][20] = {"C","C++","Java","Python","PHP"};

    fprintf(fp,"Top 5 programming language\n");
    for (int i=0; i<5; i++)
        fprintf(fp, "%d. %s\n", i+1, lang[i]);

    fclose(fp);
    return 0;
}

运行程序后,将创建一个名为 "example.txt" 的文件(如果该文件尚不存在),其中包含以下字符串

Top 5 programming language
1. C
2. C++
3. Java
4. Python
5. PHP

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战