繁体   English   中英

如何在C ++中复制包含空终止符的内存块

[英]How to copy a block of memory containing null terminator in c++

我已经在C#中将图像转换为字节数组,并已通过TCP将其发送到了用C ++编写的服务器应用程序中。

现在,我想将此字节数组复制到另一个内存块。 我已经尝试过memcpy()函数,但是问题是memcpy复制内存块直到它到达空终止符('\\ 0'),并且字节数组包含许多空终止符,我也希望它们也被复制。

更新

为简单起见,我使用以下语句将C#中的字符串“ Hello \\ 0” World \\ 0“转换为字节数组:

string s = "Hello\0"World\0";
byte[] bytes = Encoding.UTF8.GetBytes(s);

我在C ++中以无符号char *接收字节,并将其复制到另一个char指针,如下所示:

char *chars = new char[12];
memcpy(chars , recvChar, MESSAGE_12);

但是char *结果为“ Hello”;

根据这个

memcpy()函数不会在源代码中检查任何终止的空字符-它始终精确地复制num个字节。 您确定是memcpy吗?

您可以使用类似这样的方法来打印chars数组(printf以NULL字符终止):

for (int i = 0; i < 12; i++) //12 is the size of chars, I assume
{
    if (chars[i]!=NULL) //if you hit a '\0', ignore it
        printf("%c", chars[i]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM