使用memcpy将uint8_t数值复制到uint8_t数组失败求助
问题分析与解决
你的代码本身没有问题,memcpy(mess, &my_number, sizeof(my_number)) 确实会把my_number的值(1)复制到mess数组的第一个元素mess[0]中。你觉得“未能成功”大概率是以下原因:
可能的问题点
- 数组未初始化:
mess数组除了mess[0]被复制赋值外,剩下的15个元素是未定义的随机值,打印整个数组时会看到杂乱的数值,容易误以为复制失败。 - 打印方式错误:如果直接用
printf("%s", mess);打印,mess不是以'\0'结尾的字符串,会输出乱码;或者用了错误的格式符,导致数值显示异常。
验证与修复方案
- 验证复制结果:单独打印
mess[0],确认值是否为1:printf("%u\n", mess[0]); // 应该输出1 - 初始化数组后再复制:如果需要整个数组除了目标元素外都是0,先清零数组:
uint8_t mess[16]; uint8_t my_number = 1; memset(mess, 0, sizeof(mess)); // 把数组所有元素设为0 memcpy(mess, &my_number, sizeof(my_number)); - 正确打印整个数组:通过循环遍历每个元素打印:
for (int i = 0; i < 16; i++) { printf("%u ", mess[i]); } printf("\n");
内容的提问来源于stack exchange,提问作者simon
相关产品推荐
相关产品推荐

