簡體   English   中英

printf右對齊一個括號內的數字

[英]printf right align a bracketed number

我正在編寫一個顯示數組中所有信息的程序。 它必須從括號中的數組索引開始(例如[2] ),它們必須彼此正確對齊。

如果只是數字,我知道你可以這樣做:

printf("%-10d", index);

但是在其周圍加上括號會產生以下輸出

[         1]
[         2]
...
[        10]
[        11]

當我真的想要它時:

         [1]
         [2]
...
        [10]
        [11]

我該怎么做呢?

分兩步完成:首先在臨時緩沖區中構建一個未對齊的字符串,然后打印右對齊的字符串。

char buf[sizeof(index) * (CHAR_BITS + 2) / 3 + 4];
sprintf(buf, "[%d]", index);
printf("%-12s", buf);

一件容易的事就是將其分解為兩個步驟:

char tmp[128];
sprintf(tmp, "[%d]", index);
printf("%-10s", tmp);

你只需要一行而沒有臨時的char-buffer:

printf("%*s[%d]\n",12-(int)log10(index),"",index);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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