通知
すべてクリア
Topic starter
2002年3月17日 4:15 PM
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/syspro-2000/2000-04-24/file-lib.html
のサイトに書いてあったのですが、
34: void filter_char_upper( FILE *in, FILE *out )
35: {
36: int c ; /* int型。char は、不可 */
37: while( (c=getc(in)) != EOF )
38: {
39: putc( toupper(c),out );
40: }
41: }
のように、int c; で宣言しています。
どうしてcharだとダメなのですか?
2002年3月17日 8:15 PM
ファイルの終端を判別するためだと思います。
関数が成功すれば、0x00~0xff の値が返りますが、
エラーが発生すると、EOF(-1) を返します。
これが int ではなく char で受け取ると、0xff と EOF が同じになってしまい、
0xff という値が読まれたのか、ファイルの終端で EOF が返されたのか、
判断が出来なくなってしまうというわけです。
Topic starter
2002年3月17日 11:07 PM
そうい理由だったんですね。
ありがとうございました。