2011-07-11 8 views
17

Cでprintfを使用して標準出力にタブ文字を印刷すると、明らかに4文字の長さのスペースが出力されます。printf tオプション

printf("\t"); 

上記の場合、タブの幅を制御する方法はありますか。助けや助言をいただければ幸いです。

答えて

18

タブはタブです。消費するスペースは表示上の問題で、シェルの設定によって異なります。

データの幅を制御する場合は、printfフォーマット文字列のwidthのサブ指定子を使用できます。例えば。 :

printf("%5d", 2); 

それは完全なソリューション(値が長い5つの文字を超える場合、それは切り捨てではありません)ではありませんが、あなたのニーズに合わせてOKかもしれません。

完全に制御したい場合は、おそらく自分で実装する必要があります。

+3

実際に文字列の場合、切り捨てることができます: 'printf("%5.5s "、" abcdefg ");'は "abcde"を出力します。また、文字列が5文字未満の場合に出力を常に左揃えにしたい場合は、 ''%-5.5s "' – proFromDover

+0

@proFromDover:あなた自身を文字列に制限することができればOKです。 –

43

これはprintfではなく、端末によって制御されるものです。

printfは、出力ストリーム(tty、ファイルなど)に単に\tを送信しますが、いくつかのスペースを送信しません。

+2

+1これは私の意見では受け入れられたものよりはるかに適切な答えです。 –