2011-07-11 55 views
17

當您在C中使用printf將標籤字符打印到標準輸出時,它會輸出一些明顯長度爲4個字符的空格。printf t選項

printf("\t"); 

有沒有什麼辦法可以控制上述情況下的標籤寬度?任何幫助或建議表示讚賞。

回答

18

一個選項卡是一個選項卡。它消耗多少空間是一個顯示問題,並取決於你的shell的設置。

如果要控制數據的寬度,則可以使用printf格式字符串中的width子分類符。例如。 :

printf("%5d", 2); 

這不是一個完整的解決方案(如果該值超過5個字符長,它不會截斷),但可能是好的爲您的需求。

如果你想完全控制,你可能必須自己實現它。

+3

其實對於字符串,你可以得到截斷:'printf(「%5.5s」,「abcdefg」);'將輸出「abcde」。如果你總是希望在字符串少於5個字符的情況下將輸出左對齊,使用'「%-5.5s」' – proFromDover

+0

@proFromDover:如果你可以限制你自己的字符串,沒關係,是的。 –

43

這是由您的終端控制的東西,而不是printf

printf只是發送一個\t到輸出流(可以是一個tty,一個文件等),它不會發送多個空格。

+2

+1,在我看來,這比我們接受的答案要合適得多。 –