JFP 開発ガイド

ワイド文字分類関数 (jctype)

日本語専用ライブラリでは、文字を分類する機能を提供しています。これらの関数を使用する場合は、/usr/include/jctype.h を取り込んでください。

表 A-4 ワイド文字分類関数

関数

機能

isjis()

JIS X 0208 で定義される文字を表すワイド文字のとき、真を返します 

isjalpha()

JIS X 0208 で定義される英語のアルファベット文字を表すワイド文字のとき、真を返します 

isjupper()

JIS X 0208、JIS X 0212 で定義されるアルファベットの大文字を表 すワイド文字のとき、真を返します 

isjlower()

JIS X 0208、JIS X 0212 で定義されるアルファベットの小文字を表すワイド文字のとき、真を返します 

isjdigit()

JIS X 0208 で定義される数字を表すワイド文字のとき、真を返します 

isjspace()

JIS X 0208 で定義される空白文字を表すワイド文字のとき、真を返します 

isjpunct()

JIS X 0208、JIS X 0212 で定義される記述記号を表すワイド文字のとき、真を返します 

isjparen()

JIS X 0208 で定義される括弧記号を表すワイド文字のとき、真を返します 

isjline()

JIS X 0208 で定義される罫線けい線素片を表すワイド文字のとき、真を返します 

isjunit()

JIS X 0208 で定義される単位記号を表すワイド文字のとき、真を返します 

isjsci()

JIS X 0208 で定義される学術記号を表すワイド文字のとき、真を返します 

isjgen()

JIS X 0208、JIS X 0212 で定義される一般記号を表すワイド文字のとき、真を返します 

isjkanji()

JIS X 0208、JIS X 0212 で定義される漢字を表すワイド文字のとき、真を返します 

isjspecial()

JIS X 0208 で定義される特殊文字を表すワイド文字のとき、真を返します 

isjgreek()

JIS X 0208 で定義されるギリシャ文字を表すワイド文字のとき、真を返します 

isjrussian()

JIS X 0208 で定義されるロシア文字を表すワイド文字のとき、真を返します 

isjkata()

JIS X 0208 で定義されるカタカナ、濁点、半濁点、長音記号、カタカナ繰返し記号を表すワイド文字のとき、真を返します 

isjhira()

JIS X 0208 で定義されるひらがな、濁点、半濁点、長音記号、ひらがな繰返し記号を表すワイド文字のとき、真を返します 

isj1bytekana()

JIS X 0201 で定義されるカタカナ用図形文字に属する文字を表すワイド文字のとき、真を返します 

isjhankana()

isj1bytekana() と同様

次に、これらのワイド文字分類関数を使用して、JIS X 0208 の英語のアルファベット文字と数字を、ASCII の英語のアルファベットと数字に変換するプログラムを紹介します。このプログラム例では、getws(3I) 関数で行単位にファイルを読み込んだ後に、isjalpha(3X)isjdigit(3X) でワイド文字を分類し、jistoa(3X) 関数を用いて ASCII に変換しています。


例 A-3 ワイド文字分類関数

sun% cat example3.c
#include <stdio.h>
#include <locale.h>
#include <jctype.h>

main()
{
        wchar_t         wbuf[1024];
        wchar_t         *wptr;

        setlocale(LC_ALL, "");
        while (getws(wbuf) != NULL) {
                wptr = wbuf;
                while (*wptr) {
                        if (isjdigit(*wptr) || isjalpha(*wptr)){
                                printf(%"wc", jistoa(*wptr));
                        }else {
                                printf(%"wc", *wptr);
                        }
                        *wptr++;
                }
                putchar('¥n');
        }
}
sun% cat input_file3
Sun Microsystems
0123456789
sun% cc -o example3 example3.c -lw -ljapanese
sun% ./example3 < input_file3
Sun Microsystems
0123456789
sun%