2012/06/15

C言語 printf

便利な出力関数のprintf(プリントエフ)。Javaでもバージョン5から追加されて使えるようになった。コマンドプトンプトに表示する場合は、これだけあれば十分だと思う。他にもputsとかputcharなど、いくつか出力関数はあるのだが、使う必要性はなさそうだ。printfは書式指定ができる便利な関数。

printf 主な書式変換

#include <stdio.h>
int main(void){
  int num = 255;
  /* 10進数 */
  printf("%d\n",num);
  /* 16進数 小文字 */
  printf("%x\n",num);
  /* 16進数 大文字 */
  printf("%X\n",num);
  /* 8進数 */
  printf("%o\n",num);
  /* 複数の指定も可能 */
  printf("%d %x\n",num,num);
  /* 小数 丸められる*/
  printf("%f\n",3.141592653);
  /* 小数 桁全体11、小数点以下10 */
  printf("%11.10f\n",3.141592653);
  /* 指数表示 */
  printf("%e\n%e\n",0.00003,456.789);
  /* 符号表示 */
  printf("%+e\n%+f\n",-0.067,2.345);
  /* アドレス表示 */
  printf("%p\n",&num);
  /* 4桁右揃え */
  printf("%4d\n",1);
  /* 4桁右揃え 余白を0で埋める */
  printf("%04d\n",12);
  /* 単純文字列 */
  printf("text\n");
  /* 文字列 */
  printf("%s\n","text");
  /* char */
  printf("%c\n",'a');
  /* コード char */
  printf("%c\n",101);

  return 0;
}
桁をそろえたり、16進数にしたりなど結構便利に使える。
255
ff
FF
377
255 ff
3.141593
3.1415926530
3.000000e-005
4.567890e+002
-6.700000e-002
+2.345000
0023FF4C
   1
0012
text
text
a
e


printfで桁をそろえてみる

#include <stdio.h>
int main(void){
  int i,j=1;
  for(i=0; i<100; i++){
   if(i==10*j){
       printf("\n");
       j++;
   }
   printf("%4d",i);
  }
   return 0;
}
「%4d」は右揃えで4桁分で整数を10進数で表示を意味する。
   0   1   2   3   4   5   6   7   8   9
  10  11  12  13  14  15  16  17  18  19
  20  21  22  23  24  25  26  27  28  29
  30  31  32  33  34  35  36  37  38  39
  40  41  42  43  44  45  46  47  48  49
  50  51  52  53  54  55  56  57  58  59
  60  61  62  63  64  65  66  67  68  69
  70  71  72  73  74  75  76  77  78  79
  80  81  82  83  84  85  86  87  88  89
  90  91  92  93  94  95  96  97  98  99


C言語 ANSI C89 Meadow & MinGW GCC 目次はこちら