如何将数据附加到缓冲区:
我有一个缓冲区:
uint8_t* buff = malloc((uint8_t*)malloc(BLOCK+1);
现在我想用fread读取它:(我假设长度< BLOCK)
fread(buff, 1, length, file)
在第二个fread
我想将数据附加到缓冲区
fread(buff + length, 1, length, file)
会修改我的起始指针吗?
我需要保存开始指针吗?我还有其他选择吗?
答案 0 :(得分:1)
您的第一次阅读可能是:
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
。你应该检查零,这意味着读取失败。