2011年3月31日木曜日

バイナリファイル対応の head コマンド

バイナリファイルにも対応した head コマンドの例題です。

head コマンドは、ファイルの先頭行を表示するものですが、バイナリファイルの場合、改行が含まれないためにファイルの先頭から最後まで表示されてしまったりするため、非常に困ったことになる場合があります。

そこで、折り返すバイト数を指定したり、表示できない文字が含まれる場合には '*' や 16進数で表示したりすることができるようにしています。

表示には、通常の printf 関数ではなく、write 関数を用いています。
描画速度的には printf よりも write の方が速く、printf を行った後に write を行うと、write で行った表示の方が先に表示されます。
printf の表示を優先したい場合には、fflush(stdout); を行う必要があったりします。

実行結果

0 件のコメント:

コメントを投稿