[英]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.