使用fread附加到缓冲区

时间:2017-09-11 12:53:18

标签: c pointers fread

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

我有一个缓冲区:

uint8_t* buff = malloc((uint8_t*)malloc(BLOCK+1);

现在我想用fread读取它:(我假设长度< BLOCK)

fread(buff, 1, length, file)

在第二个fread我想将数据附加到缓冲区 fread(buff + length, 1, length, file)会修改我的起始指针吗? 我需要保存开始指针吗?我还有其他选择吗?

1 个答案:

答案 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。你应该检查零,这意味着读取失败。