C/C++のデータ型と書式を知る:出力の書式

沖林正紀
2008-02-08 08:00:00
  • このエントリーをはてなブックマークに追加

データ出力時の書式

 まずは出力時の書式を表す記号(変換指示子)を、例を用いながら紹介しよう。これはprintf()などの関数で用いられる。

文字列

(例) printf( "|%15s|", "Hello, World!" );  /* |  Hello, World!| */
%s
文字列全般
%10s
右寄せで10バイト以上の文字列。文字数が満たないときは、全体のバイト数が合うように左に空白が詰められる
%-10s
左寄せで10バイト以上の文字列。文字数が満たないときは、右に空白が詰められる
%c
1バイトで表される文字

 (*)文字列に全角文字が含まれるときは、バイト数と文字数とは一致しない

整数(int)

(例) printf( "|%5d %+7d %-5d|", 1234, 5678, 9012 );  /* | 1234   +5678 9012 | */
%d
整数全般
%+d
値が正の場合、左端に正の符号をつける
%5d
右寄せで5桁以上の整数。値が負のときは符号も桁数に含む。桁数が満たないときは、全体で5桁になるように左に空白が詰められる
%-5d
左寄せで5桁以上の整数。桁数が満たないときは、全体で5桁になるように右に空白が詰められる
%+5d
右寄せで符号を含めて5桁以上の整数
%05d
右寄せで5桁以上の整数。桁数が満たないときは左に0を詰める
%u
unsigned int型など、修飾子unsignedが添えられたデータ型に対して用いる
%o
8進数に変換する。%#oのときは数値の先頭に0がつく
%x
16進数に変換する。%#xのときは先頭に0xがつく。XのときはAからFまでを大文字にする

小数点付きの実数(float, double)

(例)
  printf( "|%5.3f %-9.4f|", 12.34, 56.789 );        /* |12.340 56.7890  | */
  printf( "|%012.3e %+13.5e|", 12.34, 56.789 );     /* |001.234e+001 +5.67890e+001| */
  printf( "|%6.3g %+3.5g|", 1234.5678, 56.789 );  /* |1.23e+003 +56.789| */
%f
小数点付きの実数全般
%5.3f
右寄せで小数点を含む全体が5桁、小数点以下が3桁の実数。値が負のときは符号も桁数に含む。小数点以下の桁数が満たないときは右に0が詰められ、全体の桁数が満たないときは左に空白が詰められる
%-5.3f
左寄せで小数点を含む全体が5桁、小数点以下が3桁の実数
%05.3f
右寄せで小数点を含む全体が5桁、小数点以下が3桁の実数。全体の桁数が満たないときは、左に0が詰められる
%12.3e
右寄せで指数表示(e+XXX)を含む全体が12桁、仮数部(eより左)の小数点以下が3桁の実数。eをEにすると、指数部の表示もE+XXXのようになる
%+13.5e
右寄せで指数表示(e+XXX)を含む全体が13桁、仮数部(eより左)の小数点以下が5桁の実数。小数点以下の桁数が満たないときは右に0を追加し、値が正のときにも符号を表示する
%g
同じデータに対して%eと%fを適用してみて、桁数の少ないほうにする

書式指定を用いる関数

最後に、これらの書式指定を用いる関数のうち主なものを以下に示す。関数名の末尾にfがついているのが特徴的である。

  • printf() 前述の例でも用いているが、標準出力(コンソール画面など)に書式に従った文字列を出力する
  • sprintf() 書式に従った文字列を変数に渡す
  • fprintf() ファイルに対して書式に従った文字列を出力する

 次回は、入力の場合について紹介しよう。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]