使用 fread 追加到缓冲区

Append to a buffer using fread

如何将数据附加到缓冲区:

我有缓冲区:

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,要么是剩下的 space——以较小者为准。

完成后,数据的总字节数为nbytes + xbytes。您应该检查零,这意味着读取失败。