c - Memcpy 拷贝比预期多

标签 c memcpy

我正在尝试复制 x 个字节。计算尺寸并打印出来(见下文)。我使用 memcpy 复制计数的字节数。但结果我有时会得到更长的值。怎么了?

这是部分代码:

  size_t  symlen  = tmpP - cp;
  char * triP = malloc(symlen);
  printf("mallocated %zu\n", symlen) ;
  memcpy (triP, tmpP - (symlen) , symlen);
  printf(">>VAL %s<<\n", triP);

这是一些输出,您可以看到,该值长达 15 个字符。

mallocated 15
>>VAL 558657,1033,8144399,814<<
mallocated 15
>>VAL 558657,1033,8144399,814<<

最佳答案

你应该多分配一个字节,并在其中写入一个空字符来标记字符串的结束。

size_t  symlen  = tmpP - cp;
char * triP = malloc(symlen+1);
printf("mallocated %zu\n", symlen) ;
memcpy (triP, tmpP - (symlen) , symlen);
tripP[symlen] = '\0';
printf(">>VAL %s<<\n", triP);

关于c - Memcpy 拷贝比预期多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20245321/

相关文章:

ios - xcode 7.3.1,出现错误 memcpy no member in namespace

c - Memcpy 或结构赋值?

C++ memcpy 到 malloc 内存

c - Memcpy 函数在 C 中崩溃

C++ memcpy函数,为什么用*s++而不是s[i]

python - 将 Quartz 2d python 演示移植到纯 Core Graphics C

c - 如何从文件中读取数字字符串并将它们放入数组中?

c - struct - 额外的 ": 1"是做什么的?

c - 编写递归字符串反向器 我的较小输入是什么?

c - RegSetValueEx 返回 ERROR_SUCCESS 但没有值显示