In einigen Netzwerkcode muss ich Paketstrukturen in einem Puffer verschlüsseln, um (2) über einen Socket zu senden, aber memcpy'ing die codierten Puffer in einen größeren Puffer scheint problematisch. Hier ist ein kleines Codebeispiel veranschaulicht, was ich tue:C String-Verkettung mit memcpy nicht anhängig
char tbuf[] = "test";
char *buf = malloc(300);
memset(buf, '\0', 300);
int bytes_to_copy = 300;
int bytes_copied = 0;
while (bytes_copied < bytes_to_copy) {
memcpy(buf + bytes_copied, tbuf, sizeof(tbuf));
bytes_copied += sizeof(tbuf);
}
/* free, return */
Dies sollte „test“ 60-mal in buf anhängen aber buf nur ein „Test“ endet enthält. Verwende ich memcpy falsch?
memcpy (buf + Bytes_copied, tbuf, sizeof (tbuf) - 1); – yrmt
Dies sollte funktionieren, da es nicht den Null-Terminator aber immer noch das gleiche Problem enthält. – yrmt
Vergessen Sie nicht die folgende Zeile, in der Sie 'bytes_copied' erhöhen. – Elyasin