質問

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()は、読み込んだバイト数を返します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top