memcpy字符串的问题

时间:2011-09-29 22:12:16

标签: string memcpy

我正在尝试

  • 取两个字符串(message1,message2),
  • 如果message1和message2为空,
  • 将str1分配给message1,
  • 如果它为空并且message1已满,则将str2分配给message2,
  • 并在消息1上保存消息2,如果message1和message2都已满,则将message2 == message3。

如图所示,我得到了奇怪的结果。但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个字符。

2 个答案:

答案 0 :(得分:3)

使用memcpy有特殊原因吗?我相信strcpy(char * dest,char * source)会更容易使用。也许它可以解决你的问题

您必须包含string.h才能使用它

答案 1 :(得分:1)

你确定sizeof?我记得sizeof数据类型的显示大小不是char数组/字符串的实际长度。