mac_05185 2022-07-07 11:40 采纳率: 67.1%
浏览 312
已结题

vs2022编译运行后报乱码如何解决?

这段C代码编译运行后为什么会有乱码出现?

img

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>

typedef struct
{
    uint8_t datetime[6];
    uint32_t len;
    uint8_t* data;
}DATA_T;

DATA_T data11;

void supp_data_save()
{
    size_t Return;
    int i;
    uint8_t data1[64] = { 0 };
    uint8_t* buf;

    memset(&data11, 0, sizeof(data11));

    buf = (uint8_t*)malloc(10);
    memcpy(data11.datetime, "202207\0", 6);
    data11.len = 1;
    memcpy(buf, "1233211231\0", 10);
    data11.data = buf;
    printf("data11: %c\r\n", data11.data[0]);
    printf("data11: %c\r\n", data11.data[1]);
    printf("data11: %c\r\n", data11.data[2]);
    printf("==============================\n");

    for (i = 0; i < 10; i++)
    {
        printf("%c", data11.data[i]);
    }
    printf("\r\n00\r\n");
    printf("==============================\n");
    int len1 = (sizeof(data11) + 10 - 1);
    memcpy(data1, &data11, len1);
    for (i = 0; i < 10; i++)
    {
        printf("%c", data1[i]);
    }
    printf("\r\n");
    printf("==============================\n");
    printf("data111: %c\r\n", data11.data[10]);
    printf("data111: %c\r\n", data11.data[11]);
    printf("data111: %c\r\n", data11.data[12]);
    printf("\r\n000\r\n");
}

int main()
{
    supp_data_save();
    return 0;
}
  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-07-07 12:35
    关注

    buf = (uint8_t*)malloc(10); //10字节的空间
    memcpy(data11.datetime, "202207\0", 6);//datetime[] 这里7个字节,不是6个字节
    字符数组越界操作。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月7日
  • 已采纳回答 7月7日
  • 创建了问题 7月7日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法