1

Linux (C、fread/類似) でパイプから読み取る場合、EOF に達したときに、読み取られたバイト数をどのように知ることができますか? 一度にブロックを読み取った場合、fread() は読み取った完全なブロックの数のみを返します。これは遅すぎるため、一度に 1 バイトずつ読み取ることはできません。もちろん、ftell() は -1 を返します。

4

2 に答える 2

7

param を 1 に設定し、好きなサイズにfread()設定することでこれを行うことができます。次に、「メンバー」の数はバイト数であり、適切なサイズのバッファーを保持できます。sizenmembers

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 に答える