gpt4 book ai didi

c++ - 使用 memcpy 尝试将一个结构复制到 char[] 缓冲区中

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:36 24 4
gpt4 key购买 nike

#define ECHOMAX 100

struct tDataPacket
{
int iPacket_number;
char sData[ECHOMAX];
};

int main () {
tDataPacket packet;
packet.iPacket_number=10;
strcpy(packet.sData,"Hello world");
char buffer[sizeof(tDataPacket)];

memcpy(buffer,&packet.iPacket_number,sizeof(int));
memcpy(buffer+sizeof(int),packet.sData,ECHOMAX);

std::cout<<"Buffer = "<<buffer<<"END";
return 0;
}

在上面的代码中,我试图将我的结构打包到一个 char[] 缓冲区中,以便我可以将它发送到 UDP 套接字。但是程序的输出是“”字符串。所以没有任何东西被复制到“缓冲区”。我错过了什么吗??

最佳答案

当您复制 int 时,缓冲区的前“n”个字符中至少有一个将为零(其中“n”是您平台上 int 的大小)。例如,对于一个 4 字节的 int:

x00 x00 x00 x0a   or   x0a x00 x00 x00

取决于处理器的字节顺序。

打印出零将具有终止输出字符串的效果。

关于c++ - 使用 memcpy 尝试将一个结构复制到 char[] 缓冲区中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17402809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com