charではダメ、intでないとことたりない – プログラミング – Home

charではダメ、intでないとことた...
 
通知
すべてクリア

[解決済] charではダメ、intでないとことたりない


ケイブ
 ケイブ
(@ケイブ)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

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だとダメなのですか?


引用未解決
トピックタグ
TAD
 TAD
(@TAD)
ゲスト
結合: 23年前
投稿: 54
 

ファイルの終端を判別するためだと思います。

関数が成功すれば、0x00~0xff の値が返りますが、
エラーが発生すると、EOF(-1) を返します。

これが int ではなく char で受け取ると、0xff と EOF が同じになってしまい、
0xff という値が読まれたのか、ファイルの終端で EOF が返されたのか、
判断が出来なくなってしまうというわけです。


返信引用
ケイブ
 ケイブ
(@ケイブ)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

そうい理由だったんですね。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました