![](/img/trans.png)
[英]How do positional arguments like “1$” work with printf()?
[英]printf() positional arguments with the left justify flag
我一直試圖了解如何使用 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 中格式化字符串以在仍然使用位置參數的同時顛覆這個問題?
這是man printf
所說的(在帶有 glibc 的系統上):
還可以通過編寫
%m$
代替%
和*m$
代替*
來明確指定在每個需要參數的地方采用哪個參數,其中十進制整數m
表示所需參數列表中的位置參數,從 1 開始索引。
或者,如果您更喜歡標准,Posix 說:
每個轉換規范都由
'%'
字符或字符序列"%n$"
引入,之后依次出現以下內容...
換句話說,您不能只是將2$
放入格式中的任何位置。 它需要緊跟在%
:
printf("This is a %2$-*1$s width var\n", 10, "ten");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.