在Linux中从管道读取时(C,fread/similar),当到达EOF时,如何知道读取了多少字节?如果我一次读取 block ,fread() 只返回读入的完整 block 数,我不能一次读取一个字节,因为那太慢了。当然,ftell() 返回 -1。
最佳答案
您可以通过将 size
参数设置为 1 并将 nmembers
设置为您喜欢的任何大小来使用 fread()
执行此操作。那么“成员”的数量就是字节数,你仍然可以有一个合适大小的缓冲区:
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);
关于c - 从管道读取的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/860467/