C言語 標準出力(画面)へ書式付きで出力 - stdio.h - [ printf ]
2008.10.11 Saturday | by LRESULT
C言語の中で最もメジャーな関数です。
もうすでに何度もサンプルで出てきてますが、
標準出力(画面)へ書式付きで出力する為の、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 を追加するとか。 基本的な書式を知ってないと、どうにもならないので この辺は必ず押さえる必要があります。 |