printf位置参数与左对齐标志

时间:2014-07-28 01:17:25

标签: c printf

我一直试图了解如何使用printf函数对位置参数进行左对齐。

当我使用以下内容时,我没有错误:

printf("This is a %2$*1$s width var\n", 10, "ten");

但是,当我尝试使用左对齐标志时,出现错误:

printf("This is a %-2$*1$s width var\n", 10, "ten");

ex3.c:11:2: warning: unknown conversion type character ‘$’ in format [-Wformat=]

看起来似乎没有识别出标志,而是正在寻找参数“-2”。

我是否有办法在printf中格式化字符串以在仍使用位置参数的情况下破坏此问题?

谢谢,

1 个答案:

答案 0 :(得分:2)

这是man printf所说的内容(在使用glibc的系统上):

  

还可以通过编写 %m$代替% *m$来明确指定在需要参数的每个地方采用哪个参数*,其中十进制整数m表示所需参数的参数列表中的位置,从1开始编制索引。

或者,如果你更喜欢标准,Posix说:

  

每个转换规范由'%'字符或字符序列"%n$"引入,之后按顺序出现以下内容......

换句话说,您不能将2$放在格式中的任何位置。它需要在%

之后
printf("This is a %2$-*1$s width var\n", 10, "ten");