雪傲天1 2023-04-26 10:48 采纳率: 96.2%
浏览 18
已结题

memcpy的问题不会/?

请问复制两端字符串


```c++
char *dest=new cha[0x32];
dest="1111";
char* sorce="0000";
memcpy(dest+y,source,x)
这里的x是填4呢还是填5呢,要不要把source末尾的0复制进去呢
另外,这个y是0还是1呢,如果是1,是不是代表 了dest末尾的\0呢
复制的时候,要不要通过source把dest末尾的0给占了呢

```

  • 写回答

3条回答 默认 最新

  • 社区专家-Monster-XH 2023-04-26 11:03
    关注

    基于Monster 组和GPT的调写:

    x 应该填写 4,因为需要复制的是 4 个字符(包括源字符串的结尾符 '\0')。
    y 应该填写 4,如果填写 1 则会把源字符串复制到目标字符串的起始位置,导致目标字符串的原有内容被覆盖,如果填写 4,则会在目标字符串的结尾处添加源字符串。
    由于源字符串的结尾符 '\0' 也是一个字符,因此 memcpy 函数会把源字符串的结尾符也复制到目标字符串中,不需要额外处理。
    
    
    char* dest = new char[0x32];
    strcpy(dest, "1111");
    const char* source = "0000";
    size_t x = 4;
    size_t y = strlen(dest);
    memcpy(dest + y, source, x);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月4日
  • 已采纳回答 4月26日
  • 创建了问题 4月26日