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

C言語のfeof関数について質問

  • すぐに回答を!
  • 質問No.153033
  • 閲覧数377
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 53% (55/102)

以下のようなプログラムを作り、116バイトのファイルのサイズを取得
しようとしているのですが、なぜか100バイトまで読み込んだところで、
feofが真を返し、whileループを抜けてしまいます。
どなたか、原因がわかる方は教えてください。

if((fp = fopen(filename,"r"))==NULL) return;

count = 0;

while(!feof(fp)){
fgetc(fp);
if(ferror(fp)) return;
count++ ;
}

fclose(fp);
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2

もし、Windows系であるならば、

fopen(filename, "r")

はデフォルトではテキストモードになっていますから、

fopen(filename, "rb")

とすれば、バイナリモードでオープンし、期待どおりなると思います。

テキストモードでは、fgetc は '\r\n' を '\n'1バイトとして取得します。
fputcの場合も、'\n' を '\r\n' 2バイトで出力します。
お礼コメント
ns18

お礼率 53% (55/102)

まさにinthefloiさんのおっしゃるとおりでした。
"rb"で実行したら、ちゃんと動きました。
本当にありがとうございます。
投稿日時 - 2001-10-18 14:37:12
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 37% (419/1115)

外していたらごめんなさい。(^_^; もしかしたらファイルは末尾まで読まれているのではないでしょうか。 試しにwhileの中で読み込んだ文字を表示してみて下さい。 countの数が足りないのは改行の数分ではないかと思うのですが…。
外していたらごめんなさい。(^_^;

もしかしたらファイルは末尾まで読まれているのではないでしょうか。
試しにwhileの中で読み込んだ文字を表示してみて下さい。
countの数が足りないのは改行の数分ではないかと思うのですが…。


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

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

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

特集


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

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ