Я пытаюсь
- взять две строки (message1, message2),
- назначить str1 для message1, если message1 и message2 пусты,
- назначить str2на message2, если оно пустое и message1 заполнено,
- и сохраните сообщение 2 поверх сообщения 1 и поместите message2 == message3, если и message1, и message2 были заполнены.
Я получаю странные результаты, как показано.Но memcpy не работает.(Я знаю, что это моя вина.)
input
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 символов.