2017-11-08 9 views
-2

内の文字列の末尾:私はそれを介して、このための情報とIループを含む配列を持っている合わせだから私はそうのように私の出力を整列する始めるとC

John Smith   Age: 34 Gender: M 
Micheal Smith  Age: 9 Gender: F 

ので、

for (int i = 0; i < ARRAY_LENGTH; i++) { 

     printf ("%s  Age: %d Gender: \n", person[i].name, person[i].age, person[i].gender); 
} 

私はそれがすべてのスペースもあるので揃えるようにする方法で立ち往生しています:・情報を印刷します。

おかげ

+2

http://idownvotedbecau.se/noresearch/ – klutt

+0

[printf関数を持つテーブルの作成](https://stackoverflow.com/q/9206669/995714) –

+0

は.name' 'へと固定された最大値はありますか? – chux

答えて

3

、とあなたは%のよう-18sと%2Dのことを行うことができますことに注意してください - フィールドを置くことを:あなたのケースで

、あなたのような何かを行うことができますフォーマットグループの幅と位置合わせ。

だから私はあなたのためにきれいに揃える必要があります

printf("%-20s Age:%3d Gender: %1s", 
     person[i].name, person[i].age, person[i].gender); 

ような何かをしたいです。

+0

スペースを使わないで%3 "を使うのは好奇心が強いですし、スペースを使って'%1s "'を使うのが好きです。私は ''年齢:%3dジェンダー:%2s ''または' '年齢:%2dジェンダー:%1s" 'を期待しています。 IAC、3桁の年齢は理にかなっています。 – chux

+0

@chux:オリジナルのポスターが与えた例で、データを同じ列に保存していました。私は3桁の年齢を左の次の列にあふれさせることが「最悪の事態」であると考えました。 –

+0

'%1s 'は'%s'にはない利点をあなたに与えてくれると確信していません。 '%.1s'を使用した場合、出力は最大1文字に制限されますが、「少なくとも1つの」文字は、ジェンダーが空文字列の場合にのみスペースを与えます(したがって、' person [i] .gender [ 0] == '\ 0'')、おそらく限界利益があります。 –

1

printfあなたは、指定することを、あなたはあなたの指定子は-x%xs、または右詰めのように見えるような数xと左パディングの数を提供することができ、書式指定子でパディングを指定することができます%-xsのように見えます。あなたはprintfの()の取扱説明書を見れば

printf ("%-20s Age: %5d Gender: %s\n", person[i].name, person[i].age, person[i].gender); 
2

%に書式設定の幅を追加すると、それが表示されます。だからあなたは%10sと%5dのようなものを使うことができます。 必要な数字のスペースに応じて。また、モノスペースのフォントを使用することもできます。

+0

モノスペースフォントの良い点。 –

関連する問題