• ベストアンサー

0バイトのファイルを検知したい。

ファイル上のデータを読み出して、メモリ上に一時保管する過程で、読み出しファイルのデータが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; /** 読み込み終了時 **/    }

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

stat() 関数が使えそうです。 stat() は、ファイルパスを指定して、そのファイルの属性を情報用の構造体に 詰め込んでくれます。 その構造体のメンバには st_size というのがあり、ファイルサイズが入って います。 サイズが0であることを検出するのであれば、fopen() の前に stat() で ファイルサイズを確認してしまえば OK ですね。 詳しくは、マニュアルを見てください。

noname#5848
質問者

お礼

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

その他の回答 (1)

  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

基本は 1)fopenで開いたファイルストリームを、fseekで末尾に移動 2)ftellで現在の位置(末尾)を取得 でファイルサイズが分かります。 その後、再度fssekでファイルストリームを先頭に戻し、通常作業を行います。

noname#5848
質問者

お礼

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

関連するQ&A