C言語なら、オレに聞け! <5>

このエントリーをはてなブックマークに追加
73出張あさはかマン
gnu newlibを解析してるつもりの人です。
こんなとこを見つけたのですが
------------
ctype.h
------------
...
#define _U 01
#define _L 02
#define _C 040
...
#define isalpha(c) ((_ctype_+1)[(unsigned)(c)]&(_U|_L))
...

------------
ctype_.c
------------

#include ctypes.h
...

_CONST char _ctype_[1 + 256] = {
 0,
 _C,_C,_C,_C,_C,_C,_C,_C,
...
}
------------
と書いてあったんですが、
(_ctype_ + 1)[n]って、_ctype_[n + 1]と同意なのでしょうか?
もしそうだとして、unsignedなのに配列の大きさが[1 + 256]なのも
良くわかんないです・・・・
_ctypes_[0]は何につかうのだろ・・?
74デフォルトの名無しさん:2001/07/19(木) 11:38
CSVファイルを編集するソフトを作ってみたいのですが
何かよいサンプルはありませんか。
75デフォルトの名無しさん:2001/07/19(木) 12:04
>>73
EOF用
76デフォルトの名無しさん:2001/07/19(木) 12:13
>>73
> unsignedなのに配列の大きさが[1 + 256]なのも
> 良くわかんないです・・・・
is系は0〜255までの文字とEOFの257種類を判定しなければいけない為
77出張あさはかマン:2001/07/19(木) 14:11
>>75,>>76
と、すると
EOFが返ってきそうなものは符号付で来るのかな・・・

ちょっと確かめて見ます。
有難うございます。
78出張あさはかマン:2001/07/19(木) 14:19
int getc(FILE *fp)とか、すべてint表記でした。
すると(_ctype_-1)[n]は、やはり(_ctype_)[n-1]と
結果は同じになるということですね。

納得。
さんくすです。