Linux (C、fread/類似) でパイプから読み取る場合、EOF に達したときに、読み取られたバイト数をどのように知ることができますか? 一度にブロックを読み取った場合、fread() は読み取った完全なブロックの数のみを返します。これは遅すぎるため、一度に 1 バイトずつ読み取ることはできません。もちろん、ftell() は -1 を返します。
2429 次
2 に答える
7
param を 1 に設定し、好きなサイズにfread()
設定することでこれを行うことができます。次に、「メンバー」の数はバイト数であり、適切なサイズのバッファーを保持できます。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);
于 2009-05-13T21:19:06.440 に答える
1
read()
読み込まれたバイト数を返します (何も問題がない場合)。
于 2009-05-13T21:24:18.177 に答える