|
|
|
| 2008/10/07 11:41||▲
|
|
|
今回は空白類文字の判別関数についてお話します。これで<ctype.h>内で宣言されるis〜系関数は終わりです。
isspace関数の厳密な仕様は、isalnum関数が偽となる処理系定義の文字、または標準空白類文字に対して真となります。標準空白類文字は、空白類文字とは異なり、復帰文字 '\r' が含まれます。isspace関数の実装は、他のis〜関数と同様、
static __inline__ int isspace(int c) { return __ctype[c] & _SPACE; }
とします。"C"ロケールで真になるのは、空白文字 ' '、水平タブ文字 '\t'、垂直タブ文字 '\v'、書式送り文字 '\f'、改行文字 '\n'、および復帰文字 '\r' です。
さて、C95までであれば、ここまででis〜系関数は終わりなのですが、C99では関数が一つ追加されました。それがisblank関数です。この関数は行内空白類文字を判別するためのものです。"C"ロケールでは、標準行内空白類文字かどうかの判別を行うことになります。標準行ない空白類文字には、空白文字 ' ' と水平タブ '\t' が含まれます。
厳密に言えば、isblank関数もロケールによって動作が変わるので、表引きにすべきなのかもしれませんが、実際問題として、およそ扱う可能性のあるロケールでは、標準行内空白類文字の判別ができれば十分ですので、今回は決めうちにします。
というのも、C95の範囲の関数で、8ビットあるビットパターンはすべてふさがっており、isblank関数を表引きにしようとすると、それだけで表のサイズが倍になってしまうからです。したがって、今回は、
static __inline__ int isblank(int c) { return c == ' ' || c == '\t'; }
のように定義することにします。
|
| 2006/02/08 23:59|文字種別|TB:0|CM:0|▲
|
|
|
コメント
|
|
コメントの投稿
|
|
|
|
|
トラックバック
|
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/26-da6b2581
|
|
|
|
|
ホーム
全記事一覧
<< 前の記事
次の記事 >>
|