3-3 標準関数 printf

画面に表示するための、標準入出力関数であるprintfを見ていきましょう。
使い方は
ptintf(“出力書式”, 変数1、変数2、・・・, 変数n);
でしたね、この出力書式が
printf("apple=%d pi=%f c=%c\n",apple,pi,c);
のような感じで、%d %f %c といった変換指定子がありましたね。
この変換指定子を詳しく見ていきます。

変換指定子

% ではじまり、出力データの変換形式を指定します。

データ型

データ型を指定します。

変換指定子データ型説明
%c文字型1文字を出力する
%d整数型10進数で出力する
%x整数型16進数で出力する
%o整数型8進数で出力する
%f実数少数で出力する
%e実数指数形式で出力する
%s文字列文字列を出力する

では使ってみましょう。

ソースコードのファイル名は prg.c
  1 #include <stdio.h>
  2 /**************************************
  3 printf サンプル
  4 ***************************************/
  5
  6 int main()
  7 {
  8     //変数を宣言します
  9     char       cval;
 10     short      sval;
 11     int        ival;
 12     long       lval;
 13     long long  llval;
 14     float      fval;
 15     double     dval;
 16
 17     //値をセットします
 18     cval  = 'a';
 19     sval  = 10;
 20     ival  = 1200;
 21     lval  = 2000;
 22     llval = 3000;
 23     fval  = 3.14;
 24     dval  = 150.38;
 25
 26     //表示します
 27     printf("cval  =%c\n", cval);
 28     printf("sval  =%d\n", sval);
 29     printf("ival  =%d\n", ival);
 30     printf("ival  =%o (8進数表示)\n", ival);
 31     printf("ival  =%x (16進数表示)\n", ival);
 32     printf("lval  =%d\n", lval);
 33     printf("llval =%d\n", llval);
 34     printf("fval  =%f\n", fval);
 35     printf("dval  =%f\n", dval);
 36     printf("dval  =%e (指数表示)\n", dval);
 37     printf("文字列  =%s\n", "abcedfg");
 38
 39 }
gcc prg.c -o prg.exe
prg

cval  =a
sval  =10
ival  =1200
ival  =2260 (8進数表示)
ival  =4b0 (16進数表示)
lval  =2000
llval =3000
fval  =3.140000
dval  =150.380000
dval  =1.503800e+02 (指数表示)
文字列  =abcedfg

文字列については、まだ説明していませんので、
ここでは37行のように文字列を表示できるとだけ覚えておいてください。

では、¥や%を表示したいときはどうすればよいのでしょうか。
%を書くと変換指定子と思われてしまいます。
\を書くと改行(\n)などで使用するエスケープシーケンスを表す\と思われてしまいます。


ここでエスケープシーケンス(エスケープ文字)とは、画面上に文字を表示するときに、見えない文字というべきか、改行や、色、音、カーソルの位置、文字消去などを表す特殊な文字を指します。

この書き方を見てください。

printf("fval  =%f%% です\n", fval);
printf("ival  =%d\\ です\n", ival);
実行結果は
fval  =3.140000% です
ival  =1200\ です

%を表示したい場合には%%と2つ連続で書きます。
¥を表示したい場合には¥¥と2つ連続で書きます。
また、ここでは説明しませんが、printf関数は表示を左詰めや右詰めにしたり、前ゼロをつけたり、少数の表示桁数を指定したり様々な機能を持っています。
このような感じです。

include <stdio.h>
/**************************************
printf サンプル
***************************************/

int main()
{
    //変数を宣言します
    short      sval;
    int        ival;
    double     dval;

    //値をセットします
    sval  = 10;
    ival  = 1200;
    dval  = 150.38;

    //表示します
    printf("sval  =%d\n", sval);
    printf("sval  =%5d\n", sval);     //5桁で表示
    printf("sval  =%05d\n", sval);    //5桁前ゼロ付き
    printf("ival  =%d\n", ival);
    printf("ival  =%5d\n", ival);     //5桁で表示
    printf("dval  =%f\n", dval);
    printf("dval  =%10.3f\n", dval);  //10桁で小数点以下は3桁

}
実行結果は
sval  =10
sval  =   10
sval  =00010
ival  =1200
ival  = 1200
dval  =150.380000
dval  =   150.380

とりあえず、%c %d %f を覚えて次に進みましょう!

表示桁数の指定

以下の例を見てください。

%2d  整数の桁数を指定します これは2桁
%5.2f 実数の桁数を指定します これは全桁が5桁で、その内の少数以下が2桁
%.3s 文字列の桁を指定します これは3桁

#include <stdio.h>

void bin_print(int, int , char[]);

/*********************************************
 * サンプルプログラム                        *
 *********************************************/
int main()
{
    printf("..........\n");
    printf("%2d \n", 8);
    printf("%5.2f \n", 12.58);
    printf("%.3s \n", "abcde");
}
実行結果
..........
 8
12.58
abc

こんな感じです。
実数の桁数が小数点を含めた全桁数であることに気を付けてください。

符号の指定

以下の例を見てください。

%+5d
%+5.2f
プラスを付けると符号が表示されます。

#include <stdio.h>

void bin_print(int, int , char[]);

/*********************************************
 * サンプルプログラム                        *
 *********************************************/
int main()
{
    printf("%%2d    %2d \n",  8);
    printf("%%+2d   %+2d \n", 8);

    printf("%%2d    %2d \n",  -8);
    printf("%%+2d   %+2d \n", -8);

    printf("%%5.2f  %5.2f \n",  12.58);
    printf("%%+5.2f %+5.2f \n", 12.58);

    printf("%%5.2f  %5.2f \n",  -12.58);
    printf("%%+5.2f %+5.2f \n", -12.58);

    return 0;
}
実行結果
%2d     8
%+2d   +8
%2d    -8
%+2d   -8
%5.2f  12.58
%+5.2f +12.58
%5.2f  -12.58
%+5.2f -12.58

こんな感じです。
プラスが付くかどうかが違うというところでしょうか。

右詰・左詰の指定

デフォルトでは右詰なので、左詰にしたいときは桁数指定のまえにマイナスを付けます。

%-8.3f
%-5d

#include <stdio.h>

void bin_print(int, int , char[]);

/*********************************************
 * サンプルプログラム                        *
 *********************************************/
int main()
{
    printf("..........\n");
    printf("%2d \n",  8);
    printf("%-2d \n",  8);

    printf("%7.2f \n",  12.58);
    printf("%-7.2f \n", 12.58);

    return 0;
}
実行結果
..........
 8
8
  12.58
12.58

こんな感じです。
桁がずれている(右に寄っている)ところに注意してください。

コメント

タイトルとURLをコピーしました