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;
}
说明:
fopen("example.txt", "w")
用于打开文件example.txt
,以写入模式 (w
) 打开。若文件不存在,会创建该文件。如果文件已存在,文件内容会被覆盖。fprintf(file, "Name: %s\n", name)
输出格式化的字符串"Name: John\n"
到文件。fclose(file)
用于关闭文件。
错误处理:
- 如果文件打开失败,
fopen
会返回nullptr
,这时可以通过perror()
或errno
查看错误信息。 - 如果
fprintf
无法写入文件(如文件没有写权限),它会返回负值,表示发生了错误。
4. 适用场景
- 将程序的输出结果写入日志文件、配置文件等。
- 格式化输出可以让你控制输出的内容格式(例如,控制小数点后位数、输出宽度等)。
fprintf()
是一个非常常用的函数,尤其在处理文件I/O操作时,能够帮助开发者高效地将信息写入文件并保持格式化。