我有以下代码:
void fill_buffer(void *buffer)
{
char cbuf[20]={1,2,3,4,5,6,7,8,9,9,9,9,9,9,9,11,12,13,14,15};
void* vbuf = (void*) cbuf;
buffer=vbuf;
}
我正在尝试填充主函数提供给我的缓冲区,但是我不确定如何正确填充空白表。在主函数缓冲区中定义:
unsigned char buffer[20];
最佳答案
您需要复制数据,因为cbuf
在fill_buffer()
本地,并且在函数返回时将被释放,请尝试
void
fill_buffer(void *buffer, size_t bufsize)
{
static const unsigned char cbuf = {
1, 2, 3, 4, 5, 6, 7, 8,
9, 9, 9, 9, 9, 9, 9, 11,
12, 13, 14, 15
};
if (bufsize > sizeof(cbuf) / sizeof(*cbuf))
bufsize = sizeof(cbuf) / sizeof(*cbuf);
memcpy(buffer, cbuf, bufsize);
}
您应该确保目标
buffer
分配了足够的存储空间,在这种情况下为bufsize
字节,但是如果cbuf
元素的类型不同,则可能必须使用sizeof(element_type)
。另外,也许您可以返回实际复制的字节数。
关于c - 如何将表存储到无效表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42794454/