C stdio printf() 函数
定义和用法
printf()
函数将格式化的字符串写入控制台。
printf()
函数定义在 <stdio.h>
头文件中。
注意:更准确地说,它写入由 stdout
指定的位置,stdout
通常指向控制台,但也可以配置为指向文件或其他位置。
格式说明符
格式字符串可以包含格式说明符,这些说明符描述如何以及在何处表示传递给函数的附加参数。
格式说明符的形式为 %[flags][width][.precision][length]specifier
。[方括号]中的组件是可选的。
对每个组件的解释:
flags
(标志):可选。以下字符的任意序列:
- |
使输出左对齐,通过在右侧添加填充空格而不是左侧。 |
# |
根据转换显示格式化数据的替代表示。 |
+ |
使正数始终带有“+”前缀。 |
空格字符 | 为正数添加空格前缀,主要是为了使数字与负数对齐。 |
0 |
在左侧用零填充数字。 |
width
(宽度):可选。一个整数,指定输出应占用的最小字符数。如有必要,会在右侧添加空格以达到此数量,如果使用 -
标志,则在左侧添加。如果使用 *
,则宽度由被表示参数之前的参数给出。
.precision
(精度):可选。一个点号 .
后跟一个整数,指示在格式化数据中显示多少位小数。
length
(长度):可选。一个字符序列,更改参数的预期数据类型。可以是以下之一:
hh |
期望 char 类型的整数。 |
h |
期望 short int 类型的整数。 |
l |
期望 期望 期望 |
ll |
期望 long long int 类型的整数。 |
j |
期望 intmax_t 或 uintmax_t 类型的整数。 |
z |
期望 size_t 类型的整数。 |
t |
期望 ptrdiff_t 类型的整数。 |
L |
期望 long double 类型的浮点数。 |
specifier
(说明符):必需。一个字符,指示应如何表示参数的数据。下表列出了可能的字符:
说明符列表
字符 | 说明符 | 描述 |
---|---|---|
d 或 i |
十进制整数 | 将整数表示为十进制整数。 |
u |
无符号十进制整数 | 将整数表示为无符号十进制整数。 |
o |
八进制整数 |
将整数表示为八进制整数。 " |
x 或 X |
十六进制整数 |
将整数表示为十六进制整数。 " 如果使用 " |
f 或 F |
浮点数 |
表示浮点数。如果使用 " " |
e 或 E |
科学计数法 |
以科学计数法表示浮点数。 如果使用 " " |
g 或 G |
通用数字 |
对浮点数使用 如果使用 " |
a 或 A |
十六进制浮点数 |
用十六进制数字显示浮点数的内部表示。 如果使用 " |
c |
字符 |
表示一个字符。 如果参数是整数,则表示由该整数指定的 ASCII 值的字符。 |
s |
字符串 | 表示一个字符串。 |
p |
指针 | 表示指针的内存地址,通常用十六进制数字。 |
n |
无输出 |
将到目前为止已打印的字符数写入参数。 参数必须是指向整数的指针。 |
% |
百分号 | 表示字面量 "%" 字符。 |
实例
例子 1
输出字符串:
printf("Hello World!");
例子 2
表示各种类型的整数:
char var1 = 102; short int var2 = 2024; int var3 = 95; long int var4 = 212; long long int var5 = 1200L; printf("%hhd %hd %d %ld %lld", var1, var2, var3, var4, var5);
例子 3
以多种方式表示整数:
int value = 1024; printf("%d \n", value); // 整数 printf("%o \n", value); // 八进制 printf("%x \n", value); // 十六进制 printf("%#o \n", value); // 带 "0" 前缀的八进制 printf("%#X \n", value); // 带 "0X" 前缀的大写十六进制
例子 4
以多种方式表示浮点数:
float myFloat = 19.99; printf("%f \n", myFloat); // 浮点数 printf("%e \n", myFloat); // 科学计数法 printf("%g \n", myFloat); // 最优表示 printf("%.2f \n", myFloat); // 2 位小数 printf("%8.2f \n", myFloat); // 8 个字符宽,2 位小数 printf("%08.2f \n", myFloat); // 零填充,8 个字符宽,2 位小数
例子 5
使用 %n
说明符测量字符串的长度:
// 为字符串保留 20 字节内存 char myString[20] = "Hello World!\0"; int memorySize = sizeof(myString); int stringSize; // 打印字符串并使用 %n 测量其长度 printf("%s%n\n", myString, &stringSize); // 打印字符串的大小 printf("Memory size: %d\n", memorySize); printf("String size: %d\n", stringSize);
语法
printf(const char * format, arg1, arg2...);
参数
参数 | 描述 |
---|---|
format | 必需。表示要写入文件的数据格式的字符串。 |
arg1, arg2... | 可选。任意数量的附加参数,可以使用格式参数中的说明符对其值进行格式化和打印到控制台。 |
技术细节
返回: |
如果发生错误,则返回负数。 |
---|