printf()

printf() はこれまでにも使ってきたけど改めて。一般的な形式は次のとおり。

printf(制御文字列, ...);

「…」の部分は可変長の引数で、制御文字列内に現れるフォーマット指定子に(数、順番ともに)対応する。printf() 自体は出力した文字数を返す。
フォーマット指定子は次のものがある。

%c文字
%d符号付き10進整数
%i符号付き10進整数
%e指数部付き表記(小文字)
%E指数部付き表記(大文字)
%f10進の浮動小数点数
%g%eと%fのいずれか短いほう
%G%Eと%fのいずれか短いほう
%o符号なし8進数
%s文字列
%u符号なし10進数
%x符号なし16進数(小文字)
%X符号なし16進数(大文字)
%pポインタを表示
%n対応する引数は整数へのポインタでなければならず、その領域にこれまで出力された文字数を書き込む
%%%記号

%%、%c、%p、%n以外は最小フィールド幅指定子と精度指定子を指定できる。また、デフォルトでは数値は右詰めで表示されるけど、-記号をつけることで左詰めにできる。ま、だいたいわかるな。

ちょっとわかりづらいのは %n だ。これは出力するためのものではなくて、出力した文字数を保存するためのものだ。次のプログラムはその例。

#include

int main(void)
{
    int i;

    printf("%d %f\n%n", 100, 123.45, &i);
    printf("Output %d characters\n", i);

    return 0;
}
takatoh@nightschool $ ./sample_8_5
100 123.450000
Output 15 characters

%n が現れるまでに 15 文字出力したと(15 文字目は改行文字)。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください