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