🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: japan.comp.lang.visual-c++
Article #46

Re: ferror 関数について

#46
From: KANEKO Yutaka
Date: Thu, 22 Jan 1998 00:00
45 lines
2648 bytes
  金子@仙台電波です。

<6a6kg7$1oo$1@newsegg01.TokyoNet.AD.JP>の記事において
toshi2@super.win.or.jpさんは書きました。
>> こういう書き方しました。
>> FILE *fp;
>> fp = fopen("FILENAME", "rb");←FILENAMEは存在しない。
>> if(ferror(fp)){
>>     exit(1);
>> }
>> でもANSI C言語辞典によるとfopen後のエラー判定はferrorによらなければならな
>> い。

    平林雅英著、「ANSI C言語辞典」、技術評論社、1989

の事ですかね?手元にあるのは、平成4年8月25日発行の初版第7刷
ですが、95頁のferror()の項目に

    ・注意
	(1) 文字入出力関数がバイナリ・ストリームを通した入出力を
	    する場合は、ferror関数によらなければいけない。
	(2) 略

とありますがこれはたぶん、fgetc()などの返り値をちゃんとchar型
でなくint型で受けている限りは大丈夫なはずです。'\xff'とEnd Of
Fileが区別できないような実装になっているfgetc()/getc()は普通
ないと思うけどなぁ。しかも、そういう問題は「バイナリモード」
で開いていなくてもありうるし。

それから、ferror()のサンプルにしっかり

    FILE *fin=fopen(argv[1],"r");
    if (ferror(fin)) printf("ファイルエラー\n");
    else             printf("ファイル正常\n");

というコードが載っています。いうまでもなく誤りですが、DOSな
んかだと偶然うまく動いてしまうんだろうな。

  ま、本に載っている例は必ずしも正しくないってことです。

double x,y,z=1.8;main(a,b){x=(time( /*       金子 裕(Yutaka Kaneko)          */
0)%935)/472;while(!0){y=x;x=2-z*(x- /* Sendai National College of Technology */
1)*(x-1);a=(x*631);a%=78;b=(y*95);b /*     kaneko@cc.sendai-ct.ac.jp         */
%=24;printf("\033[%d;%dHx\n",b,a);}}/*Evanx08,Megax05,Escax07,Fushx16,WedPx07*/
Technical Details
Message-ID: <6a6tb9$m7$2@dp-cc.cc.tohoku.ac.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <6a3h1r$ibv$1@newsegg00.tokyonet.ad.jp> <6a6kg7$1oo$1@newsegg01.TokyoNet.AD.JP>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 10a2c7,1dd3954acd66bbd2
X-Google-Attributes: gid10a2c7,public
X-Google-Thread: 106434,1dd3954acd66bbd2
X-Google-Attributes: gid106434,public
X-Google-Thread: f869b,1dd3954acd66bbd2
X-Google-Attributes: gidf869b,public
From: kaneko@ccedu.sendai-ct.ac.jp (KANEKO Yutaka)
Subject: Re: ferror 関数について
Date: 1998/01/22
Message-ID: <6a6tb9$m7$2@dp-cc.cc.tohoku.ac.jp>
X-Deja-AN: 318269247
References: <6a3h1r$ibv$1@newsegg00.tokyonet.ad.jp> <6a6kg7$1oo$1@newsegg01.TokyoNet.AD.JP>
Content-Type: text/plain; charset=ISO-2022-JP
Organization: Sendai National College of Technology, Sendai JAPAN.
Mime-Version: 1.0
Newsgroups: japan.comp.lang.visual-c++,fj.lang.c,japan.comp.lang.c