これまでも頻繁に使用してきたprintf関数ですが、まだ説明していない機能があります。
printf関数は、表示する文字や数値の桁数を指定することができます。
次のプログラムはこれまでのように、桁数はprintf任せです。
このプログラムの実行結果は次の通りになります。#include <stdio.h> int main(void) { int a = 10000,b = 500,c = 3; printf("Aは %d です。\n",a); printf("Bは %d です。\n",b); printf("Cは %d です。\n",c); return 0; }
結果を見てもわかる通り、数字はそのまま表示されており、
Aは 10000 です。
Bは 500 です。
Cは 3 です。
printf関数で桁数をそろえるには、次のようにします。
%桁数d出力変換指定子の間に数字を付けると、その桁数になるよう空白をいれて表示します。
このプログラムの実行結果は次の通りになります。#include <stdio.h> int main(void) { int a = 10000,b = 500,c = 3; printf("Aは %3d です。\n",a); printf("Bは %3d です。\n",b); printf("Cは %3d です。\n",c); return 0; }
結果を見るとわかりますが、桁数に合わせて空白がいれられて読みやすくなっています。
Aは 10000 です。
Bは 500 です。
Cは 3 です。
従って、予想される最大の桁数を指定しておけば、必ず桁がそろえられて表示されます。
また、マイナス値を表示すると、-記号も1桁として取り扱われるので、
マイナスの値を表示する可能性がある場合は1桁大きく指定しておきます。
printf関数では、コンピュータでよく見かける、0を使った表示も可能です。
桁数の前に0を付けると、空白の代わりに0を付けて表示するようになります。
次のプログラムは、先頭に0を付けるように変更した例です。
このプログラムの実行結果は次の通りになります。#include <stdio.h> int main(void) { int a = 10000,b = 500,c = 3; printf("Aは %03d です。\n",a); printf("Bは %03d です。\n",b); printf("Cは %03d です。\n",c); return 0; }
なんとなく、コンピュータっぽい表示になっている気がします。
Aは 10000 です。
Bは 00500 です。
Cは 00003 です。
実数値の表示では、全体の桁数と共に小数点以下の桁数を指定できます。
%全体桁数.小数桁数fここで注意すべきことは、全体桁数は小数の桁数と小数点を含むことです。
次のプログラムは、実数値を桁指定で表示する例です。
このプログラムの実行結果は次の通りになります。#include <stdio.h> int main(void) { double pi = 3.14159; printf("%6.2f\n",pi); printf("123456\n"); return 0; }
下の行は桁数を見やすくするために付けたものです。
3.14
123456
他にもいろいろな指定をすることができます。
詳しくは、単語と記号の出力変換指定子を参照してください。