跳转到内容

C++ 编程/代码/标准 C 库/函数/printf

来自维基教科书,开放的书籍,开放的世界
语法
#include <cstdio>
int printf( const char *format, ... );
cout<<printf;

printf() 函数根据传递给 printf() 的格式和其他参数将输出打印到 **stdout**。格式字符串包含两种类型的项目 - 将打印到屏幕上的字符以及定义如何显示 printf() 的其他参数的格式命令。基本上,您指定一个格式字符串,其中包含文本以及映射到 printf() 的其他参数的“特殊”字符。例如,此代码

char name[20] = "Bob";
int age = 21;
printf( "Hello %s, you are %d years old\n", name, age );

显示以下输出

 Hello Bob, you are 21 years old

%s 表示“将第一个参数(字符串)插入此处”。%d 表示第二个参数(整数)应放置在该位置。对于不同的变量类型有不同的 %- 代码,以及用于限制变量长度等的选项。

控制字符 解释
%c 单个字符
%d 十进制整数
%i 整数
%e 科学记数法,使用小写 "e"
%E 科学记数法,使用大写 "E"
%f 浮点数
%g 使用 %e 或 %f,哪个更短
%G 使用 %E 或 %f,哪个更短
%o 八进制数
%x unsigned 十六进制,使用小写字母
%X unsigned 十六进制,使用大写字母
%u 一个 unsigned 整数
%s 字符串
%ls 宽字符串
%x 十六进制数
%p 指针
%n 参数应是指向整数的指针,其中将放置到目前为止写入的字符数
%% 百分号

可以在最终控制字符之前出现一个字段长度说明符以指示字段的宽度

  • h,当插入 %d 内部时,会导致参数为 short int。
  • l,当插入 %d 内部时,会导致参数为 long。
  • l,当插入 %f 内部时,会导致参数为 double。
  • L,当插入 %d 或 %f 内部时,会导致参数分别为 long long 或 long double。

放在 % 符号和格式命令之间的整数充当最小字段宽度说明符,并使用空格或零填充输出,使其足够长。如果您想用零填充,请在最小字段宽度说明符之前放置零

  %012d

您还可以包含一个精度修饰符,形式为 .N,其中 N 是某个数字,在格式命令之前

 %012.4d

精度修饰符的含义根据使用的格式命令而有所不同

  • 对于 %e、%E 和 %f,精度修饰符允许您指定所需的十进制位数。例如,%12.6f 将显示至少 12 位宽的浮点数,并带六位小数。
  • 对于 %g 和 %G,精度修饰符确定显示的有效数字的最大数量。
  • 对于 %s,精度修饰符只是充当最大字段长度,以补充在句点之前的最小字段长度。

所有 printf() 的输出都是右对齐的,除非您在 % 符号后立即放置减号。例如,

 %-12.4f

将显示最小为 12 个字符、4 位小数且左对齐的浮点数。您可以使用字母 l 和字母 h 修改 %d、%i、%o、%u 和 %x 类型说明符,以指定长数据类型和短数据类型(例如,%hd 表示短整数)。%e、%f 和 %g 类型说明符可以在它们之前带有字母 l,以指示其后跟着 double。%g、%f 和 %e 类型说明符可以用字符 '#' 作为前缀,以确保即使没有小数位也会出现小数点。在 %x 类型说明符中使用 '#' 字符表示十六进制数应以 '0x' 前缀打印。在 %o 类型说明符中使用 '#' 字符表示八进制值应以 0 前缀显示。

在类型说明符中插入加号 '+' 将强制正值以 '+' 符号作为前缀。在其中放置空格字符 ' ' 将强制正值以单个空格字符作为前缀。

您还可以包含常量转义序列在输出字符串中。

printf() 的返回值是打印的字符数,如果发生错误则为负数。

相关主题
fprintf - puts - scanf - sprintf
华夏公益教科书