Bruce.さん < こん??は でび です
On Thu, 25 Dec 2008 21:36:12 +0900
"Bruce." <kbk@...> wrote:
> 入力がマルチバイトのまんまなんだから、wchar_t 使うようにしたって意味ない
> ですよ。
> for (count = 0; (c = fgetc(fp)) != EOF; count++) {//←このfgetcは1バイト
> ごとの読み出し
> if (iskanji(c)) {
> if (iskanji2(c2 = fgetc(fp)))
> c = ((c << 8) | c2);//←2バイト文字なら上位下位のペアを組み立てる
この8って何じゃ?、と思っていたら、SJISの2バイト文字が8140〜だから、
読み込んだ1バイト(8ビット)分の、先頭が8以下なら半角(ASCIIだけでなく
半角カナも含む)、という判断にする根拠に使っていたんですね。
む〜ん。
つくづく、コンピュータ上での日本語って、呪われた言語だったんだなぁ…と。
> buf[count] = c & ~0x8000;//2バイト文字の最上位ビットを落とす
> つまり、sjisで
> C:\home>echo LCSを使う|hexdump
> 4C 43 53 82 F0 8E 67 82 A4
>
> というバイト並びのイメージを内部的に
>
> 004C 0043 0053 02F0 0E67 02A4
>
> という16ビットごとの並びにして、処理を進めているわけです。
ある意味、独自に内部コード化してる、ということですか?
すると、拭(SJISで9040)、漾(SJISでE040)なんかは、
それぞれ1040、7040となるわけですか?
愚問かもしれませんが、お許し下さい。
ちと脳味噌オーバーフロー気味です。0で除算しそう…。
でび http://davi.txt-nifty.com/1984/