一覧にするだけでなく、実例を上げながら説明してみようと思う。網羅されており、手軽に閲覧でき読みやすいドキュメントしては、manが良いと思う。*fomat引数内に記述する変換書式である。...);過去の記事と同じになってしまうが、変換書式は以下の様な形になっている。%が現れるとそれ以降に記述される変換指定子にしたがって変換が行われる。%と変換指定子の間には0個以上の修飾子を挿入できる。変換指定子について説明する。以下の表は、前述したmanの説明を抜粋しつつ私なりの説明を加えたもの。intを引数として、10進数表記に変換する。xとXの違いは、16進数表記で利用するアルファベットを小文字とするか、大文字とするかの違いである。doubleを引数として、指定された精度に丸めて、[-]0.000000e±00という形式に変換する。小数点以下の数字の桁数が精度として指定する値で、デフォルトは6となっている。この表記はソースコード上で浮動小数点リテラルを記述する方法の一つでもある。10^{-12}\)を表現している。eとEの違いは、Eを指定すると、eの代わりにEが用いられるという点だけだ。[-]0000.00という一般的に利用される小数表記に変換する。小数点以下の桁数が精度として指定する値で、デフォルトは6になっている。double型を引数として、fもしくはeの形式に変換する。変換される値の指数が、-4より小さいか、精度以上の場合に、e形式が使用される。小数点以下に数字がひとつもない場合は小数点も省略される。double型を引数として、[-]1.000000p±00という形の16進数を使った表記に変換する。2^{0}\)という意味で、2進数で1.1、10進数で1.5を表現している。仮数部の小数点以上の桁は0以外の時必ず1で、指数部分は10進数表記となっている。浮動小数点数の実際のビット列表現に近い出力を得ることができる。char型に変換し、対応する文字に変換する。*型、文字列へのポインタを引数として、指し示す文字列を出力する。文字列はNULL文字'\0'で終端されている必要がある。*型とみなして、そのポインタの値(アドレス値)を16進数表記で出力する。int値にキャストして%#xに渡した場合と同じになる。ポインタ値を適切に出力したい場合は、この変換指定子を利用する。この変換指定子であれば、32bit環境でも64bit環境でも、同じ記述で適切な変換を行うことができる。出力としては何も行われず、入力動作になる。引数は取らず、strerror(errno)の結果に変換される。glibcの拡張仕様。引数は取らず、一つの%に変換される。コード例とその出力という形で示していこうと思う。-10これはなんの変哲もなく、整数を10進数表記に変換するというもの、dでもiでも結果は同じ。非常によく利用するパターンだと思う、符号も日常的な感覚と同じく、負の場合のみ出力される。intを引数として取るものの例。順に、8進数、10進数、16進数(アルファベット小文字)、16進数(アルファベット大文字)となる。intとして解釈した値に変換する。バイナリデータを扱う場合は多用することになるだろう。-100000doubleを引数として取り、10進数表記で変換するものの例。Eの場合は、有効数字を明確にした仮数部+指数部の形式となる。意味のある有効数字を表示したければ、変換書式で精度を明示的に指定する必要がある。Fの場合は、一般的な小数表記になり、精度は小数点以下の桁数を表すことになる。Gの場合は、e形式か、f形式かを出力する値に応じて切り替えて変換してくれる。fどちらかになるだけでなく、小数点以下が0の場合は整数のように表示する。Gを使うと読みやすい形式に変換してくれる。符号は負の場合のみ出力される。浮動小数点数の場合、NaNやInfという値になる。この特殊な値も変換可能で、変換させた結果は以下のようになる。この場合は出力されるアルファベットの大文字小文字として違いが現れる。0X1.4P+3doubleを引数として取り、16進数表記で出力するものの例。16進数表記なので10進数では丸めが入ってしまう表記も、正確に出力できる。10進数での0.1が2進数で表現すると循環小数になってしまうのも見て取れる。charにキャストし、対応する文字に変換。*型、つまり、ポインタを引数として、そのポインタが指し示す文字列に変換する。文字列を扱う場合は常にそうだが、必ずNULL文字'\0'で終端されている必要がある。運が良ければ一部のメモリをダンプした出力になり、多くの場合はハングという事態になる。./a.out0x7fffe48d3554ポインタ値を16進数表記に変換する。32ビット向けにコンパイルした結果も合わせて表示している。ポインタ値のビット幅が変わっても、この方法なら適切に出力してくれる。n);Success::%8最後はこれまでのものとはちょっと毛色が違う。errnoの値を、strerror(errno)とした場合の文字列に変換して出力してくれる。利用するにあたって、(本当は良くないが)errnoの値を初期化する必要がなければ、errno.hをインクルードする必要もない。上記例では、errnoの値に特に何も設定されるエラーは発生していないため、Successと変換されている。これはCの標準仕様ではなく、glibcの拡張仕様である。次にnは出力ではなく入力となる、この時点までに変換された文字数を、引数のint*型の指し示す場所に格納する。%そのものを最終的に出力したい場合は、%を2つ付けて書くことでひとつの%として変換されるようになっている。文字列リテラルの中に%が記述できないわけではないので、\%とエスケープしても意味は無い。フラグ更新情報2018/07/28lsっぽいコマンドを作る13アップしました。2018/07/13lsっぽいコマンドを作る12アップしました。2017/01/04lsっぽいコマンドを作る11アップしました。2017/01/03lsっぽいコマンドを作る10アップしました。(https://commoncrawl.org/faq/)。