質問
Linuxでパイプ(C、同様の関数fread /)、EOFに達したとき、どのように読まれたバイト数を知ることができるから読み出すとき?私は一度にブロックを読み込む場合は、関数fread()唯一のフルブロックの数を読み込み、それは遅すぎるので、私は一度に1つのバイトを読み取ることができません返します。もちろん、ftellは()は-1を返します。
解決
あなたは1にfread()
のPARAMを設定することにより、size
でこれを行うと、あなたが好きなサイズにnmembers
を設定することができます。そして、「会員」の数は、バイト数であり、あなたはまだまともなサイズのバッファを持つことができます:
char buf[8192];
size_t n;
n = fread(buf, 1, sizeof buf, f);
の代わりに
char buf[8192];
size_t n;
n = fread(buf, sizeof buf, 1, f);
他のヒント
(何がうまくいかない場合)
read()
は、読み込んだバイト数を返します。
所属していません StackOverflow