[[C言語講座]] #markdown{{ #書式文字列 printfなど一部の関数では、書式文字を使用して文字列を操作することが出来ます。 書式文字列は通常の文字列と代わりませんが%以降の数文字が特別な意味を持ちます。 []は省略可能です。 %[フラグ][フィールド幅][.精度][長さ修飾子]変換指定子 これを文字列の中に打ち込むとその位置に後で指定した変数の中身を書く出すことが出来ます。 複数回%がでると前から順番に指定された変数を出力します。 例 int i=2,j=3; printf("%dand%d\n",2,3); とすると 2and3 となります ###フラグ フラグ|意味 -------|---- -|変換結果をフィールド内に左詰めにする (デフォルトは右詰め) +|変換結果が正,負に関わらず符号を出力する (デフォルトは負の場合のみ出力) 空白|変換結果の最初の文字が符号でない場合か,符号付き変換の結果が 0 の場合に空白を結果の前に付ける \#|結果を "代替形式"※ に変換する 0|出力文字数が最小フィールド幅未満の場合は 0 を埋める ※ 代替形式 *変換指定子 o に対して: 必要な場合に精度を増加し,結果の最初を 0 にする *変換指定子 x, X に対して: 0 でない結果の前に 0x を置く *変換指定子 a, A, e, E, f, F に対して: 小数点文字の後ろに数字が続かない場合でも常に小数点文字を表示する *変換指定子 g, G に対して: 小数点文字の後ろに数字が続かない場合でも常に小数点文字を表示する.後ろに続く 0 を結果から取り除かない ####長さ修飾子 ###長さ修飾子 長さ修飾子|意味 -----------|----- hh|対応する実引数の型が char 型であることを指定する h|対応する実引数の型が short 型であることを指定する l (エル)|対応する実引数の型が long 型, wchar_t 型であることを指定する ll (エルエル)|対応する実引数の型が long long 型であることを指定する j|対応する実引数の型が intmax_t 型であることを指定する z|対応する実引数の型が size_t 型であることを指定する t|対応する実引数の型が ptrdiff_t 型であることを指定する L|対応する実引数の型が long double 型であることを指定する ####変換指定子 ###変換指定子 変換指定子|意味 -----------|---- d, i|int 型の引数を 10 進符号付き整数に変換する u|unsigned int 型の引数を 10 進符号無し整数に変換する o|unsigned int 型の引数を 8 進符号無し整数に変換する x, X|unsigned int 型の引数を 16 進符号無し整数に変換する f, F|double 型の引数を小数形式浮動小数点数に変換する e, E|double 型の引数を指数形式浮動小数点数に変換する g, G|f か e のどちらかに変換する (変換の結果として得られる指数が -4 より小さいか,精度以上の場合は e 形式になる) a, A|double 型の引数を 16 進浮動小数点に変換する c|int 型の引数を 一端 unsigned char 型に変換し,変換結果の文字を書き込む s|文字配列の先頭要素へのポインタを文字列に変換する p|void 型へのポインタを処理系定義の方法で表示文字の並びに変換する n|整数変数に出力済み文字数を格納する (引数は符号付き整数型へのポインタ) %|'%' を出力する }}