OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • すぐに回答を!
  • 質問No.188283
  • 閲覧数314
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

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

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

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

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


詳しくは、マニュアルを見てください。
お礼コメント
noname#5848

ありがとございます。
マニュアルを頑張って読んでやってみます!
投稿日時 - 2001-12-20 20:14:47
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル12

ベストアンサー率 41% (324/772)

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

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

でファイルサイズが分かります。
その後、再度fssekでファイルストリームを先頭に戻し、通常作業を行います。
お礼コメント
noname#5848

いろんなやり方があるんですね。
その方法もしてみて、両方試したいと思います。
ありがとうございました。
投稿日時 - 2001-12-20 20:51:51


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ