ファイル上のデータを読み出して、メモリ上に一時保管する過程で、読み出しファイルのデータが0バイトであった時にエラーメッセージを表示させたいのですが、何で検知できるのでしょうか。C言語でつくっています。
ちなみに今はこんな感じになっているんですが・・・・・・

/** データを入力 **/
if(fgets(buf,sizeof(buf), fin) == NULL){
   /** 売上表ファイル入力 **/
   if(ferror(fin) != 0){ /** エラー時 **/
      printf(ERR_MSG,SORT,URI_FIL,uriage_file);
   }else{
      i_ret = 0; /** 読み込み終了時 **/
   }

このQ&Aに関連する最新のQ&A

A 回答 (2件)

stat() 関数が使えそうです。



stat() は、ファイルパスを指定して、そのファイルの属性を情報用の構造体に
詰め込んでくれます。

その構造体のメンバには st_size というのがあり、ファイルサイズが入って
います。

サイズが0であることを検出するのであれば、fopen() の前に stat() で
ファイルサイズを確認してしまえば OK ですね。


詳しくは、マニュアルを見てください。
    • good
    • 0
この回答へのお礼

ありがとございます。
マニュアルを頑張って読んでやってみます!

お礼日時:2001/12/20 20:14

基本は



1)fopenで開いたファイルストリームを、fseekで末尾に移動
2)ftellで現在の位置(末尾)を取得

でファイルサイズが分かります。
その後、再度fssekでファイルストリームを先頭に戻し、通常作業を行います。
    • good
    • 0
この回答へのお礼

いろんなやり方があるんですね。
その方法もしてみて、両方試したいと思います。
ありがとうございました。

お礼日時:2001/12/20 20:51

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


人気Q&Aランキング

おすすめ情報