在C中,据我所知,到目前为止,这是正确的:
printf("%10s\n", "This is C");
将返回:
" This is C!"
(字符串前面的有意空格;没有引号)。
我的问题是,您可以使用变量替换指定打印长度的10
吗?如果是这样,怎么样?
答案 0 :(得分:1)
就是这样:
printf("%*s\n", 10, "This is C");
格式已从%10s
更改为%*s
。 printf()
现在期望在字符串之前的参数中,int
的宽度用于填充字符串(上例中的10
;显然也可以是变量)
要告诉printf()
将输出填充到左侧(而不是默认右侧),请使用-
:%-*s
。 (输出将从" This is C"
更改为"This is C "
。)
告诉printf()
只从字符串中取出少量的第一个字节,或者如果字符串不是以空值终止的,则可以将.*
添加到与精度相同的格式的格式中浮点类型。 printf()
将打印到该字符数,并在第一个空字符处停止。例如:
int width = 10;
int chars = 4;
printf( "%-*.*s", width, chars, "This is C" );
会生成输出"This "
。