アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

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

(^_^;

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

もし、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

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