簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM