- ベストアンサー
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; /** 読み込み終了時 **/ }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
stat() 関数が使えそうです。 stat() は、ファイルパスを指定して、そのファイルの属性を情報用の構造体に 詰め込んでくれます。 その構造体のメンバには st_size というのがあり、ファイルサイズが入って います。 サイズが0であることを検出するのであれば、fopen() の前に stat() で ファイルサイズを確認してしまえば OK ですね。 詳しくは、マニュアルを見てください。
その他の回答 (1)
- selenity
- ベストアンサー率41% (324/772)
基本は 1)fopenで開いたファイルストリームを、fseekで末尾に移動 2)ftellで現在の位置(末尾)を取得 でファイルサイズが分かります。 その後、再度fssekでファイルストリームを先頭に戻し、通常作業を行います。
お礼
いろんなやり方があるんですね。 その方法もしてみて、両方試したいと思います。 ありがとうございました。
お礼
ありがとございます。 マニュアルを頑張って読んでやってみます!