如何将数据追加到缓冲区:
我有一个缓冲区:
uint8_t* buff = malloc((uint8_t*)malloc(BLOCK+1);
现在我想使用 fread 读取它:(我假设长度 < BLOCK)
fread(buff, 1, length, file)
在第二个fread
我想将数据附加到缓冲区
fread(buff + length, 1, length, file)
会修改我的起始指针吗?
我需要保存起始指针吗?我还有什么其他选择?
最佳答案
您第一次阅读的内容可能是:
size_t nbytes = fread(buff, 1, length, file);
您的第二次阅读可能是:
size_t xbytes = fread(buff + nbytes, 1, min(length, BLOCK + 1 - nbytes));
(其中 min()
当然可能是: static inline size_t min(size_t x, size_t y) { return (x < y) ? x : y; }
)。
起始偏移量是上一次读取结束的位置;读取的长度是 length
再次,或剩余的空间 - 以较小者为准。
完成后,数据的总字节数为 nbytes + xbytes
。您应该检查零,这意味着读取失败。
关于c - 使用 fread 附加到缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46156272/