Translations of this page?:

printf

文法:

    #include <cstdio>
    int printf( const char *フォーマット, ... );

printf()関数は、パラメータで渡されたフォーマットと、それ以外の引数に従って、標準出力に出力します。文字列フォーマットは2種類の要素を含んでいます。一つは文字列で、そのままスクリーンに出力されます。もう一つがフォーマットコマンドで、printf()に渡された他の引数をどのように出力するか定義します。通常は、表示したい文字列を含むフォーマット文字列の中に、他の引数と対応する”特殊文字”を埋め込んでしようします。例えば、下記のコードがあったとすると、

     char name[20] = "ボブ";
     int age = 21;
     printf( "こんにちわ %s。あなたは %d 歳です。\n", name, age );

以下のように表示されます:

     こんにちわ ボブ。あなたは 21 歳です。

%sは、”最初の引数をここに文字列として挿入しなさい”という意味になります。%dは2番目の引数の数値をここに配置しなさいという意味になります。これらの%コードは引数のタイプごとに定義されています。変数の長さ制限などもオプションで指定できます。

コードフォーマット
%c文字列
%d符号付き整数
%i符号付き整数
%e小文字”e”を使用した科学的記数法
%E大文字”E”を使用した科学的記数法
%f浮動小数点数
%g%eか%fのどちらか短い方
%G%Eか%fのどちらか短い方
%o8進数
%s文字列
%u符号なし整数
%x小文字の文字列を使用した、符号なし16進数
%X大文字の文字列を使用した、符号なし16進数
%pポインタ
%n引数に数値へのポインタを指定すると、%nが登場するまでに出力した文字数を格納します

%記号とフォーマットコマンドの間に整数を入れると、最短の出力文字数幅を指定することができます。指定された長さに満たない場合には、指定された長さになるまでスペースかゼロが追加されます。もしもゼロを使用したい場合には、文字数指定の数値の前にゼロを入れてください。

     %012d

文字数を変数で指定したい場合には、数値の代わりに*記号を入れます:

     int width = 12;
     int age = 100;
     printf("%*d", width, age);

有効数字の修飾子を付けることができます。指定する場合には.Nという形式(Nは数値)で、フォーマットコマンドの直前に設定します:

     %012.4d

フォーマットコマンドによっては、精度指定は異なる意味を持ちます:

  • %e, %E, %fの場合は、数字を入れたいスペースの数の指定になります。例えば、%12.6fの場合には最低12文字のスペースの幅で、そのうち、小数点以下の文字数が6文字になります。
  • %g, %Gの場合には精度指定は、有意な数値の桁数の最大値の指定になります。
  • %sの場合には、単純に最大のフィールド長指定として動作します。ピリオドの前の最小フィールド長の動作の補足をします。

フィールド長指定があるところでは、*記号とint型の変数を指定して、精度修飾子に入る値を指定することができます:

     const char* msg = "Hello printf";
     int string_size = strlen (msg);
     printf("メッセージ: %.*s", string_size, msg);

%記号の前にマイナス記号を付けない限りは、printf()の出力はすべて右寄せになります。

サンプル:

     %-12.4f

この場合には、最低12文字の幅で浮動小数点数が表示されます。実際に数値が入るのは4桁で、左寄せで表示されます。

%d, %i, %o, %u, %xの型指定子の場合には、'l'あるいは'h'の文字を修飾子として設定することで、long型、もしくはshort型のデータ型であるということを明示することができます。例えば、%hdと指定すると、short型の整数の意味になります。

%e, %f, %gの型指定子の場合には、それぞれの文字のlを付けると、double型の変数が渡されるということを指定できます。%g, %g, %e型指定子は'#'という記号をe, f, gの文字の前に入れることができます。この場合は、小数点以下の数値がなくても強制的にピリオドを表示します。

%xの型指定子の場合、'#'文字をxの前に設定すると、16進数の前に'0x'というプリフィックスが表示されます。

%oの型指定子の場合、'#'文字をoの前に設定すると、8進数の前に'0'というプリフィックスが表示されます。

プラス記号'+'を型指定文字の前に入れると、正の数の場合に、'+'を表示するようになります。また空白文字' 'を指定すると、正の整数時に空白文字1文字を強制的に出力するようになります。

printf()の出力文字の中にはエスケープシーケンスを指定することができます。

printf()の返り値は出力した文字数になります。もしエラーが発生した場合には負の数になります。

関連トピック: fprintf, puts, scanf, sprintf

 
• • • SitemapRecent changesRSScc