thisdesuのブログ

C言語はじめました

にほんブログ村 IT技術ブログ C/C++へ

printf

C言語では最もよく使う関数でしょう(派生も含め)。この関数は色んな型の値を指定した書式で表示(標準出力)してくれる関数ですが、この指定の仕方が沢山あって覚えるのが大変なのですが、基本的なものは覚えましょう。

■printf書式

printf("フォーマット",値1,値2,,,,);

フォーマットは固定の文字も含む事が出来て、このフォーマットの中に値の書式を指定します。書式は[%]から始まる記号で構造の値の数だけ指定でき、左から値の順に指定することになります。
ただし、値の型と指定した書式と形式が有っていないと意図しない結果や落ちますので要注意。

■指定書式

%c :1文字を表示しますchar型用
%s :string用
%d :整数型(int,short)用
%f :実数型(float)用
%x :16進数で表示します(int,short)用


■サンプル1

#include <stdio.h>

int main() {
  char c = 'c';
  char s[7] = "string";
  int d = 11;
  float f = 12.3;
  int x = 10;

  printf("%c\n",  c );
  printf("%s\n",  s );
  printf("%d\n",  d );
  printf("%f\n",  f );
  printf("%x\n",  x );

}

■実行結果

$ gcc main.c
$ ./a.out
c
string
11
12.300000
a


また1つの書式にも色々は指定ができます。

%10d  :右詰10文字で整数を表示
%010d :10文字でゼロパディング(先頭を0で埋める)表示
%.1f  :小数点以下1位で表示(四捨五入)
%0.1f :小数点以下1位で表示(四捨五入)
%10s  :右詰10文字で文字列を表示
%-10s :左詰10文字で文字列を表示※見た目分かりませんが後ろがスペースで埋まります。


■サンプル1

#include <stdio.h>

int main() {
  int   d = 11;
  float f = 1.254;
  char  s[6] = "hello";

  printf("%d\n",  d );
  printf("%10d\n",  d );
  printf("%010d\n",  d );

  printf("%f\n",  f );
  printf("%.1f\n",  f );

  printf("[%s]\n",  s );
  printf("[%10s]\n",  s );
  printf("[%-10s]\n",  s );
}

■実行結果

$ gcc main.c
$ ./a.out
11
        11
0000000011
1.254000
1.3
[hello]
[     hello]
[hello     ]


■参考
printfの仲間

printf
fprintf
sprintf
snprintf
vprintf
vfprintf
vsprintf
vsnprintf