• ベストアンサー

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

以下のようなプログラムを作り、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);

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

  • ベストアンサー
noname#30727
noname#30727
回答No.2

もし、Windows系であるならば、 fopen(filename, "r") はデフォルトではテキストモードになっていますから、 fopen(filename, "rb") とすれば、バイナリモードでオープンし、期待どおりなると思います。 テキストモードでは、fgetc は '\r\n' を '\n'1バイトとして取得します。 fputcの場合も、'\n' を '\r\n' 2バイトで出力します。

ns18
質問者

お礼

まさにinthefloiさんのおっしゃるとおりでした。 "rb"で実行したら、ちゃんと動きました。 本当にありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • natural
  • ベストアンサー率37% (419/1115)
回答No.1

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

すると、全ての回答が全文表示されます。

関連するQ&A