2016-08-02 2 views
0
#include "stdio.h" 
int main() 
{ 
    int toes = 10; 
    printf("toes=%d\t2toes=%d\ttoes2=%d\n",toes,toes+toes,toes*toes); 
    return 0; 
} 

//これはCプライマープラスの練習です。コンパイルして実行した後、2番目の\ tだけが動作します。なぜ最初の tが機能しないのですか?

+1

あなたは_ \ tはwork_しないで何を意味するのですか? – pzaenger

+2

これは動作しますが、ビジュアル表現には1つ以上のスペースは必要ありませんか?ヘキサダンプを実行したり、空白文字を特別に視覚化しているエディタにコピーアンドペーストしてください。 – moooeeeep

+0

タブにはx個のスペースは挿入されません。コンソールウィンドウの列に出力を揃えます。 –

答えて

6

私にとってはうまく動作します。 (example

出力:

toes=10 2toes=20  toes2=100 

なお\t手段 "TABULATE"、又はNは通常8 N位置の最も近い倍数にパッドに換言されます。

toes=10は7文字を占めるため、8の次の倍数に達するには1桁のスペースが必要です。

+0

'2toes = 20'は8文字を占めるので、8の次の倍数に合わせるには8つのスペースを必要とします(タブサイズが8であると仮定します)。 – rustyx

+0

外部リンクに依存している回答は役に立ちません。問題に問題がなければ、近い理由があります。 – Olaf

+0

すみません?それで、SOプログラムを直接コンパイルして実行する方法を教えてください。 – rustyx

2

タブは、テキストを固定位置にインデントします。これは、4つのスペースのギャップを作るのではなく、次のフラグを立てるまでギャップを作ることを意味します。

toes=10 2toes=20  toes2=100 
1234567812345678123456781234567812345678 

これは不運な例です。あなたのタブの長さは8です。だから彼らは8文字ごとに停止する。最初にスペースを1つ追加した場合は、\tのタブはより大きなギャップになります。 \t文字が常に同じスペースを取りません

single double square                                                         
    10  20 100 
0

、それをカラムに調整します:出力

printf("%s%s%s\n", " single", " double", " square"); 
printf("%7d%7d%7d\n", toes, 2*toes, toes*toes); 

より良い出力書式設定をすることによって実現されるだろう。

エントリ間のスペースを修正する場合は、値の間に手動で空白を入力します。

1

動作していますが、そうではないようです。

これは、デフォルトでtabspace8spacesに等しいためです。 を入力すると、は7個のスペースを取り、残りの部分は1個のスペースしか占めません。

あなたのprintfに変更する作業をしていることを確認するには:

printf("ts=%d\t2toes=%d\ttoes2=%d\n",toes,toes+toes,toes*toes); 
関連する問題