Posts
isprint でハマる
画面に表示できない文字を判別する際に isprint を使って振り分けをしていたところ、どうも意図したとおりに動作しない。よく調べてみると、int 型の引数に char 型の文字を渡していることに気づいた。
int isprint( int c );
今使っているコンパイラは単なる char を signed char として扱うので、関数側で判定がうまくいってなかった模様。
ファイル読み込み時は int を返す fgetc を使っていたので特に意識していなかったが、よくよく考えてみれば当たり前の動作か。VC++ と BCC で挙動が違ったので、てっきりポインタまわりのバグかと思った。
is 系関数の挙動については「ctype について」に詳しく載っているので気になる人はどうぞ。