2016-12-05 38 views
1

シンプルなようですが、これを行う方法はわかりません。 私がしようとしたことはprintf("%d.", i);ですが、実際のコードは、パディングを必要とするため、実際のコードは、このprintf("%-4d.", i);ようになり、したがって、それはこのように書きます:私は"1. "
どれソリューションで欲しい"1 ."
C intをcharに変換してドットを追加する

編集:私が何を意味するのかわからない場合は、ドットの後にスペースを入れてください。これはすべて、きちんとした出力のためです。 別の編集:私はまた、ドット自体の後にスペースを追加しようとしましたが、常に同じ量のスペースを印刷するので恐ろしいように見えます。インデントでは、スペース出力を制御します。

+0

:あなたが手でパディングを行うことができますので、代わりに

char buf[12]; snprintf(buf, sizeof(buf), "%d.", i); printf("%-5s", buf); 

が、あなたは、printfが印刷された文字の数を返すという事実を使用することができます:あなたは、補助文字列に書くことができます:もう一度質問を読んでください。 –

+0

@ 4386427それは整頓されません。これは何百もの変数を列挙しますので、 "1.名前"であれば "100名前"になります。私はそれが "1.名前"と "100.名前" – TenzoNakami

答えて

1

基本的には文字列の操作を行い、結果を埋めています。文字列を保持する一時バッファを作成し、それを印刷するときに埋め込みます。

char buf[20]; 
snprintf(buf, sizeof(buf), "%d.", i); 
printf("%-5s", buf); 
+0

になってほしいです。これはまさに私が探しているものです。あなたはそれについてabitを説明してもらえますか?私はsnprintf()について多くの情報を見つけることができません。 – TenzoNakami

+0

'snprintf'関数はファイルに出力するのではなく、文字列に出力します。それ以外は 'printf'や' fprintf'と同じです。 –

1

あなたはこれを行うことができます:printf("%d.%*c", i, number_of_spaces, ' ');

それは醜いですが、それはあなたの問題を修正します。

+2

実際、それについては「醜い」ものはありません。空白で埋められる文字フィールドの幅を指定する 'printf' *フォーマット文字列*への最小フィールド幅*修飾子を正しく使用しています。 –

+0

あなたが気に入ってよかった! :) – bhazero025

+0

しかし、あなた自身で 'i'の値に応じて' number_of_spaces'を計算する必要があります。 – Gerhardh

1

これを行うにはいくつかの方法があります。 4386427 @

int n = printf("%d.", i); 

while (n++ < 5) putchar(' '); 
+0

2番目はきれいな解決策です。 – KarelG

関連する問題