知识点
宽度和精度格式参数
- 可以省略
- 或者嵌入到格式字符串中(如
%8s
,%9.2f
)。 - 或者在格式字符串中由
*
指示,此时作为另一个函数参数传递。
例如,printf("%*d", 5, 10)
将打印 10,总宽度为 5 个字符。
而 printf("%.*s", 3, "abcdef")
将打印abc。
%*s
#include <stdio.h>
int main(void)
{
char buf[]="ABCDEFG123456789";
printf("%*s", 10, buf);
return 0;
}
运行结果
ABCDEFG123456789
此时,*s表示s是一个长度可变的,必须由其后第一个参数指明其长度,第二个参数指明其内容。
- 表示打印长度可变
- 后面第一个参数指明其长度
- 第二个参数指明其内容
%.*s
#include <stdio.h>
int main(void)
{
char buf[]="ABCDEFG123456789";
printf("%.*s", 10, buf);
return 0;
}
运行结果
ABCDEFG123
所以,
*
由参数指定。%*s
表示至少*
个字符,不足补空白。%.*s
表示最多*
个字符,多了截断。
同理,%*.*f