okkyの日記: うるとらすぅぱぁ手抜き BOM remover 7
日記 by
okky
#include <stdio.h>
#include <stdlib.h>
#define BUFSIZE (4*1024* 4*1024)
char buffer[BUFSIZE];
int
main( int argc, char *argv[] )
{
getchar();
getchar();
getchar();
while( !feof(stdin) ) {
size_t insize, outsize;
insize = fread( buffer, 1, BUFSIZE, stdin );
outsize = fwrite( buffer, 1, insize, stdout );
}
}
そういえば昔、ノートパッドがBOMをどうしても入れてくるのがうっとうしくて作った覚えがあったわ。
見ての通り、stdin から最初の3「getchar()」を読み捨てて、残りを stdout に送りつけます。エラー処理はしていません。
tail (スコア:2)
tail -c +4 ではダメですか?
私の ~/bin には、その手の1行シェルスクリプトが散乱してます。
「ヒストリが覚えているからいいか」と思ってたワンライナーが、ヒストリから消えた時のショックが大きいので、
「いつかまた使うかも」とワンライナーをよくスクリプト化するんだけど、
粗製濫造しすぎて、いざ必要になった時には、どれが使いたいコマンドなのかわからなくなって、また1から書くことも多かったり…
Re:tail (スコア:1)
tail -c +4 ではダメですか?
BOMは2バイトなので、 tail -c +3 かなあ。
Re:tail (スコア:1)
> BOMは2バイトなので、 tail -c +3 かなあ。
UTF-8の場合、BOMは3バイトですよ。okkyさんのCコードも3バイト読み飛ばし。
…って、日記本文中にはUTF-8なのかどうかそのあたりのことが何にも書かれてないですね。
こっちの話 [slashdot.jp]を読んでると、UTF-8の話だってことは明白なんですけど…
Re:tail (スコア:1)
> UTF-8の場合、BOMは3バイトですよ。okkyさんのCコードも3バイト読み飛ばし。
あ、UTF-8だったのですね。BOMという単語がでてきたので、UTF-16と勘違いしました。
はやとちりです>自分
Re:tail (スコア:1)
あぁ、tail か!!
tr とかじゃできないしなぁ、と思ってたんだが。
fjの教祖様
nkf (スコア:2)
# BOM付ける時は-w8でね。
Re:nkf (スコア:1)
最近、nkf が入っている distribution って少なくありませんか??
# cygwin とかも含めて。
今ふと思って調べたが iconv に BOM 除去機能が無いのはがっかりだ。
fjの教祖様