next up previous
Next: 腕試し用プログラミング課題2 Up: 3 テキスト・ファイル Previous: 腕試し用プログラミング課題1

3.5 文字コードをいじってみよう

WWW ページに mycat.c というプログラムを載せてある。 これは cat コマンドの真似をして、 ファイルの内容を標準出力 (通常は画面) に出力するだけのプログラムである。
mycat.c をコンパイルする
isc-xas06% gcc -o mycat mycat.c
isc-xas06% ./mycat mycat.c

このプログラム mycat.c を読んでみよう。 中の print_file() という関数を書き換えると、 色々なことができる。例えば
日本語 EUC に対応した mydump.cprint_file
void print_file(FILE * fp)
{
    int c, c2;
    /* ファイルの終りまで一文字ずつ c に読み込み、標準出力に書き出す */
    while ((c = getc(fp)) != EOF) {
        if (c >= 0x80) {
            /* 0x80 以上だったら漢字の 1 バイト目だと判断して、
               もう 1 バイト読んで、まとめて出力する。 */
            c2 = getc(fp);
            printf("0x%02x 0x%02x: %c%c\n", c, c2, c, c2);
        } else if (c < 0x20 || c == 0x7f)
            /* 0x20 未満または 0x7f の場合は文字コードのみ表示 */
            printf("0x%02x\n", c);
        else
            /* それ以外の場合は文字コードと、その文字自身を出力 */
            printf("0x%02x: %c\n", c, c);
    }
}
isc-xas06% cat ascii_and_kanji.txt
I am 桂田祐史.
isc-xas06% ./mydump ascii_and_kanji.txt
0x49: I
0x20:  
0x61: a
0x6d: m
0x20:  
0xb7 0xcb: 桂
0xc5 0xc4: 田
0xcd 0xb4: 祐
0xbb 0xcb: 史
0x2e: .
0x0a
isc-xas06% 




next up previous
Next: 腕試し用プログラミング課題2 Up: 3 テキスト・ファイル Previous: 腕試し用プログラミング課題1
Masashi Katsurada
平成20年10月18日