You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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'结尾的字符串,会输出乱码;或者用了错误的格式符,导致数值显示异常。

验证与修复方案

  1. 验证复制结果:单独打印mess[0],确认值是否为1:
    printf("%u\n", mess[0]); // 应该输出1
    
  2. 初始化数组后再复制:如果需要整个数组除了目标元素外都是0,先清零数组:
    uint8_t mess[16];
    uint8_t my_number = 1;
    memset(mess, 0, sizeof(mess)); // 把数组所有元素设为0
    memcpy(mess, &my_number, sizeof(my_number));
    
  3. 正确打印整个数组:通过循环遍历每个元素打印:
    for (int i = 0; i < 16; i++) {
        printf("%u ", mess[i]);
    }
    printf("\n");
    

内容的提问来源于stack exchange,提问作者simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:10:25