C++ fprintf() 格式化输出到文件
fprintf() 原型
int fprintf(FILE* stream, const char* format, ...);
fprintf()
函数将由 format
指向的字符串写入流 stream
。字符串 format
可能包含以 % 开始的格式说明符,这些格式说明符被传递给 fprintf()
函数作为额外参数的变量值替换。
它定义在 <cstdio>
头文件中。
fprintf() 参数
-
stream
:指向输出文件流的指针,内容将写入该流。 -
format
:指向以空字符结尾的字符串的指针,该字符串被写入文件流。它由字符组成,包括可选的以 % 开始的格式说明符。 格式说明符由相应变量的值替换,这些变量紧随格式字符串之后。 格式说明符包括以下部分: -
前导的 % 符号
-
Flags
:可选的一个或多个标志,修改转换行为。-
:在字段内左对齐结果。默认为右对齐。+
:结果的符号附加在值的开头,即使是正结果。- 空格:如果没有符号,结果的开头附加一个空格。
#
:执行转换的替代形式。0
:用于整数和浮点数。使用前导零而不是空格填充数字。
Width
:可选的下划线或整数值,用于指定最小宽度字段。
Precision
:可选字段,由 . 后跟下划线或整数或不指定,用于指定精度。
Length
:可选长度修饰符,指定参数的大小。
Specifier
:转换格式说明符。可用的格式说明符如下:
格式说明符 | 描述 |
---|---|
% | 打印 % |
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, "前 5 种编程语言\n");
for (int i = 0; i < 5; i++)
fprintf(fp, "%d. %s\n", i + 1, lang[i]);
fclose(fp);
return 0;
}
当你运行程序时,将创建一个名为 "example.txt" 的文件(如果尚不存在),其中包含以下字符串:
前 5 种编程语言
1. C
2. C++
3.
Java
4. Python
5. PHP