C 中的格式说明符
本文介绍C语言中printf函数的使用,以及该函数中使用的格式说明符。 本文将详细讨论格式说明符的语法以及它们如何用于不同的数据类型。
让我们先看看 printf 函数的语法。
C 中 printf() 函数中的格式说明符
printf()
函数的语法是:
int printf ( const char * format, ... );
此函数将存储在标准输出控制台上的格式变量中的字符串写入。 如果此字符串包含格式说明符,即一些以 % 符号开头的子字符串指定一些变量,则这些将替换为字符串后指定的值。
参数:
- format
要写入输出的文本存储在此 C 字符串中。 它可以选择包含嵌入式格式说明符,替换为下一个额外参数中提供的值并根据需要格式化。
格式说明符遵循以下模式:
%[flags][width][.precision][length]specifier
方括号 []
表示这些说明符是可选的。 例如,printf("%lu",4294967295)
表示以无符号长格式打印 4294967295。
这里,l 是 long int 的长度说明符,u 是无符号数的说明符。 其余的可选参数将被忽略。
该模式末尾的说明符是最重要的部分,因为它定义了要打印的数据类型。 下表显示了不同说明符的列表及其说明:
说明符 | 说明 |
---|---|
d | 或者 i 有符号十进制整数 |
u | 无符号十进制整数 |
o | 无符号八进制数 |
x | 无符号十六进制数 |
X | 大写的无符号十六进制 |
f | 小写十进制浮点数 |
F | 大写十进制浮点数 |
c | 字符 |
s | 字符串 |
a | 小写的十六进制浮点数 |
A | 大写的十六进制浮点数 |
p | 指针地址 |
说明符之前的其余子说明符都是可选的,但它们的用途定义如下。
标志:
标志 | 说明 |
---|---|
- | 用于左对齐字段。 |
+ | 强行在正数前放置一个加号 |
# | 用于八进制和十六进制说明符 (o,x,X),分别放置 0、0x 或 0X。 |
0 | 将 0 添加到值的左侧。 |
宽度:
width | 描述 |
---|---|
(number) | 指定要打印的最少字符数。 |
* | 宽度作为要格式化的参数之前的附加整数值参数提供,而不是在格式字符串中提供。 |
精度:
精度 | 描述 |
---|---|
.number | 指定要打印的最小位数。 如果数字的位数较少,则在左侧用零填充。 |
.* | 精度作为要格式化的参数之前的附加整数值参数提供,而不是在格式字符串中提供。 |
长度:
长度 | 描述 |
---|---|
hh | 指定 printf 假设一个 int 大小的整数参数从整数类型的 char 提升。 |
h | 指定 printf 假设一个 int 大小的整数参数从整数类型的缩写提升而来。 |
l | 指定 printf 假定整数类型的长整型参数。 对于浮点类型,这将被忽略。 使用可变参数时,浮点参数会自动提升为双精度。 |
ll | 指定 printf 假定整数类型的长整数参数。 |
L | 指定 printf 假定浮点类型的 long double 参数。 |
z | 对于整数类型,指定 printf 假定一个 size_t 大小的整数参数。 |
j | 对于整数类型,指定 printf 假定一个 intmax_t 大小的整数参数。 |
t | 对于整数类型,指定 printf 假定一个 ptrdiff_t 大小的整数参数。 |
- ... 该函数可能需要一系列附加参数,每个参数都包含一个值以替换格式字符串中的格式说明符,具体取决于格式字符串(或指向存储位置的指针,对于 n)。
这些参数的数量至少应等于格式说明符中指示的值的数量。 该函数忽略任何其他参数。
返回值:
如果操作成功,则返回写入的字符总数。 设置错误指示(ferror),如果发生写入错误则返回一个负整数。
Errno 设置为 EILSEQ,如果在写入宽字符时出现多字节字符编码错误,则给出一个负整数。
例子:
#include <stdio.h>
int main()
{
printf ("Some Character values: %c %c \n", 'b', 66);
printf ("Some Decimal Value: %d %ld\n", 1234, 670000L);
printf ("Numbers preceeding with blank spaces: %10d \n", 1234);
printf ("Numbers preceeding with zeros: %010d \n", 1235);
printf ("Different number systems: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
return 0;
}
输出:
Some Character values: b B
Some Decimal Value: 1234 670000
Numbers preceeding with blank spaces: 1234
Numbers preceeding with zeros: 0000001235
Different number systems: 100 64 144 0x64 0144
相关文章
在 C 语言中使用 typedef enum
发布时间:2023/05/07 浏览次数:181 分类:C语言
-
本文介绍了如何在 C 语言中使用 typedef enum。使用 enum 在 C 语言中定义命名整数常量 enum 关键字定义了一种叫做枚举的特殊类型。
C 语言中的 extern 关键字
发布时间:2023/05/07 浏览次数:114 分类:C语言
-
本文介绍了如何在 C 语言中使用 extern 关键字。C 语言中使用 extern 关键字来声明一个在其他文件中定义的变量
C 语言中的 #ifndef
发布时间:2023/05/07 浏览次数:186 分类:C语言
-
本文介绍了如何在 C 语言中使用 ifndef。在 C 语言中使用 ifndef 保护头文件不被多次包含 C 语言中的头文件用于定义同名源文件中实现的函数的接口。