ファイルの読み込みサイズ

[戻る]
ワカメ 2006/10/18(水) 14:04:31
ファイルの内容を取り込みたく、以下のようにしました。
しかし、内容は取り込めてそうなのですが、
size変数に0が入ります。MSDNでは実際に読み取った
サイズが入ると書いているようですがなぜでしょうか?
実際に読み取ったサイズを得る方法は他にありますか?
環境はXP&VC2003です。

char    buf[500000];
FILE    *fp;
int    size;

fp = fopen("foo.bin", "rb");//ファイルサイズは200kbくらい
size = fread(buf, sizeof(buf), 1, fp);
fclose(fp);

επιστημη 2006/10/18(水) 14:10:55
> MSDNでは実際に読み取ったサイズが入ると書いているようですがなぜでしょうか?

そんなこと一言も書いてありません。

fread(格納場所,項目のサイズ,読み出す最大項目数,ファイル)
の戻り値は"正しく読めた項目数"となります。

size = fread(buf, sizeof(buf), 1, fp);
これは "ひとつ500000バイトの項目を1項目読め"ってことですから、
ファイルが500000バイトに満たなければ「正しく読めた項目数はゼロ」です。

ワカメ 2006/10/18(水) 14:38:29
[[解決]]
なるほど…
size = fread(buf, 1, sizeof(buf), fp);
こうしたら出来ました

ありがとうございました。

古いスレッドには追加発言できません。