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

このQ&Aに関連する最新のQ&A

A 回答 (2件)

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



fopen(filename, "r")

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

fopen(filename, "rb")

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

テキストモードでは、fgetc は '\r\n' を '\n'1バイトとして取得します。
fputcの場合も、'\n' を '\r\n' 2バイトで出力します。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/10/18 14:37

外していたらごめんなさい。

(^_^;

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

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング