我正在尝试
如图所示,我得到了奇怪的结果。但memcpy不起作用。 (我知道这是我的错。)
message1: ffW
message 2: a
message 3 (2 writes over 1, 3 writes over 2): bbb
MESSAGE 1a: ffW
MESSAGE 2a: a_W
MESSAGE 1ab: a_W
MESSAGE 2ab: a_W
MESSAGE 1b: a_W
MESSAGE 2b: bbb
INPUT:
message1: a
message2: abcde
message3: abcdefg
MESSAGE 1a: a��
MESSAGE 2a: abcde
MESSAGE 1ab: abcd
MESSAGE 2ab: abcde
MESSAGE 1b: abcd
MESSAGE 2b: abcdefg
if (message1[0] == '\0')
{
memcpy(message1, echoBuffer, sizeof echoBuffer);
fprintf(stderr, "MESSAGE 1: %s \n", message1);
}
else if (message1[0] != '\0' && message2[0] == '\0')
{
memcpy(message2, echoBuffer, sizeof echoBuffer);
fprintf(stderr, "MESSAGE 2: %s \n", message2);
}
else if (message1[0] != '\0' && message2[0] != '\0')
{
fprintf(stderr, "MESSAGE 1a: %s \n", message1);
fprintf(stderr, "MESSAGE 2a: %s \n", message2);
memcpy(message1, message2, sizeof message2);
fprintf(stderr, "MESSAGE 1ab: %s \n", message1);
fprintf(stderr, "MESSAGE 2ab: %s \n", message2);
memcpy(message2, echoBuffer, sizeof echoBuffer);
fprintf(stderr, "MESSAGE 1b: %s \n", message1);
fprintf(stderr, "MESSAGE 2b: %s \n", message2);
}
}
有人知道出了什么问题吗?这个问题一直困扰着我。
我认为消息和echoBuffer的大小都是100个字符。
答案 0 :(得分:3)
使用memcpy有特殊原因吗?我相信strcpy(char * dest,char * source)会更容易使用。也许它可以解决你的问题
您必须包含string.h才能使用它
答案 1 :(得分:1)
你确定sizeof?我记得sizeof数据类型的显示大小不是char数组/字符串的实际长度。