- 代码演示:
int64_t d = 123;
printf("test printf:%5" PRId64 "\n", d);
printf("test printf:%-*d", 5, d);
printf("test printf:%*d", 5, d);
// output
test printf: 123
test printf:123 test printf: 123
- 对齐
在C语言的printf
函数中,%*
是一个格式转换说明符,用于指定输出字段的宽度。这里的*
是一个占位符,表示该字段的宽度由后面的参数决定。
例如,printf("%*s", 10, "Hello")
表示输出一个宽度为10的字符串"Hello",不足10个字符的宽度用空格填充。
%-*s
中的-
表示左对齐,即在右侧填充空格,*
表示宽度由后面的参数决定,s
表示输出字符串。
%*d
、%*f
等格式转换说明符的含义类似,只是分别用于输出整数、浮点数等不同类型的数据。
以下是使用printf
函数实现左对齐和右对齐的演示代码:
#include <stdio.h>
int main() {
int width = 10;
printf("%-*s|%*d|%*s\n", width, "Name", width, 24, width, "USA");
printf("%-*s|%*d|%*s\n", width, "Alice", width, 30, width, "UK");
printf("%-*s|%*d|%*s\n", width, "Bob", width, 22, width, "Canada");
return 0;
}
- 格式化
PRId64
宏的定义如下:
// #include <inttypes.h>
#define PRId8 "hhd"
#define PRId16 "hd"
#define PRId32 "d"
#define PRId64 "lld"
PRId64
是一个用于printf
函数的格式化输出宏,用于表示一个64位整数。在使用时,可以直接在printf
函数的格式化字符串中使用PRId64
,然后将64位整数类型的变量传递给printf
函数。
下面是一个简单的示例:
#include <stdio.h>
#include <inttypes.h>
int main() {
int64_t num = 1234567890123456789LL;
printf("The number is: %" PRId64 "\n", num);
return 0;
}
在这个示例中,int64_t
是一个64位整数类型,num
是一个int64_t
类型的变量,存储了一个64位整数值。%" PRId64 "\n"
是格式化字符串,%" PRId64
表示占位符,PRId64
表示使用PRId64
宏表示的格式化输出,\n
表示换行。printf
函数会将num
的值按照PRId64
宏定义的格式化输出,输出结果为:
The number is: 1234567890123456789
注意,在使用PRId64
宏时,需要包含inttypes.h
头文件,因为PRId64
宏的定义在inttypes.h
头文件中。