C言語 標準出力(画面)へ書式付きで出力 - stdio.h - [ printf ]

2008.10.11 Saturday | by LRESULT


C言語の中で最もメジャーな関数です。

もうすでに何度もサンプルで出てきてますが、
標準出力(画面)へ書式付きで出力する為の、printf()関数です。


printf
書式 int printf( const char *format, ... )
機能 標準出力(画面)へ書式付きで出力する
引数 const char *format : 書式文字列
... : 可変個引数で書式で指定された変数をカンマ区切りで指定します。
戻り値 成功すると、出力したバイト数を返し、
失敗すると、負値を返します。


書式の一覧は、いずれやるつもりですが、
まずは、代表的なフォーマットを記載しておきます。

%で始まる記号を変換指定子と言います。


変換指定子
%d 10進数
%c 文字
%s 文字列
%o 8進数
%x 16進数(小文字)
%X 16進数(大文字)
%f 浮動小数点
%% %(パーセント)記号を表示


記号から始まる記号をエスケープシーケンスと言います。


エスケープシーケンス
¥n 改行
¥t タブ文字
¥0 文字列の終端記号(数値では0)
¥¥ ¥記号を表示


以上が、代表的な書式です。

他にも ¥05d を指定した場合は、最低5桁を0で表示するなどがあります。
( 123 → 00123 )





サンプルコード
printf()の書式を使って、イロイロな形式で表示してみます。
結果をコメントに書いてますので、比べながら見てみて下さい。
#include <stdio.h>

int main(void)
{
  int    i = 123;
  float  f = 123.123456;
  double d = 123.123456789012345;
  char   c = 'a';
  char  *s = "abcdefg";

  printf( "%%d [整数]で表示¥n" );
  printf( "i = %d¥n", i );      /* 123 */
  printf( "i = %05d¥n", i );    /* 00123 */
  printf( "¥n" );

  printf( "%%X [16進数]で表示¥n" );
  printf( "i = %x¥n", i );      /* 7b */
  printf( "i = %X¥n", i );      /* 7B */
  printf( "i = %#x¥n", i );     /* 0x7b */
  printf( "i = %#X¥n", i );     /* 0X7B */
  printf( "¥n" );

  printf( "%%o [8進数]で表示¥n" );
  printf( "i = %o¥n", i );      /* 173 */
  printf( "i = %#o¥n", i );     /* 0173 */
  printf( "¥n" );

  printf( "%%f [浮動小数点]で表示¥n" );
  printf( "f = %f¥n", f );      /* 123.123459 */
  printf( "f = %.7f¥n", f );    /* 123.1234589 */
  printf( "f = %9.3f¥n", f );   /*   123.123 */
  printf( "d = %f¥n", d );      /* 123.123457 */
  printf( "d = %.15f¥n", d );   /* 123.123456789012350 */
  printf( "d = %9.3f¥n", d );   /*   123.123 */
  printf( "¥n" );

  printf( "%%c [文字]で表示¥n" );
  printf( "c = %c¥n", c );      /* a */
  printf( "¥n" );
  printf( "%%s [文字列]で表示¥n" );
  printf( "s = %s¥n", s );      /* abcdefg */
  printf( "s = %.3s¥n", s );    /* abc */
  printf( "¥n" );

  return 0;
}



結果
様々なprintf()の書式変換を見てみました。
あまり、知られてなさそうな所で、文字列の%s指定で、%.5sとすると
表示する文字数を5文字に指定できる書式でしょうか。
16進数に%#x を指定すると 0x を追加するとか。

基本的な書式を知ってないと、どうにもならないので
この辺は必ず押さえる必要があります。

カテゴリ:C言語 stdio.h | 20:03 | comments(0) | trackbacks(0) | -


コメントする











この記事のトラックバックURL

トラックバック機能は終了しました。

トラックバック