1

在 Linux(C,fread/类似)中从管道读取时,当到达 EOF 时,如何知道读取了多少字节?如果我一次读取块,fread() 只返回读取的完整块的数量,并且我不能一次读取一个字节,因为这太慢了。当然, ftell() 返回 -1。

4

2 回答 2

7

您可以fread()通过将size参数设置为 1 并将 设置为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 回答