我正在使用memcpy
复制字符串 function(uint8 *data)
{
uint8 buffer[9];
uint8 i = 0;
/*some long calculation and segregation of data*/
i = 7;
memset(buffer, 0, 9);
memcpy(buffer, &data[i], 8);
printf(Buffer "%s\n", buffer);
printf(data "%s\n", &data[i]);
}
我得到的结果是
buffer 00 A1 Ef 45 87 E0 00 12
data F1 A1 Ef 45 87 E0 00 12
第一个角色是00而不是F1。请一些人帮我解决这个简单的问题
答案 0 :(得分:5)
memcpy
需要指向缓冲区的指针:
void * memcpy ( void * destination, const void * source, size_t num );
你的来源是双指针,我想你想要的是:
memcpy(buffer, data, 8); //since data is the pointer to your actual data
正如@TripeHound所指出的那样:
printf(data "%s\n", data); // not &data
是你需要的。