drei Arrays miteinander verbinden
-
Hallo,
ich möchte drei Arrays miteinander verbinden, sodass ein Array exakt wie folgendes entsteht:
unsigned char buf2[] = {0xAA, 0x55, 0x00, 0x00, 0x00, 0x00, 0x41, 0xCC, 0x33, 0xC3, 0x3C};
mein Code sieht etwa so aus:
unsigned char buf2[20] = {0xAA, 0x55, 0x00, 0x00, 0x00, 0x00}; unsigned char str_end[] = {0xCC, 0x33, 0xC3, 0x3C}; unsigned char str[] = {0x41}; strcat(buf2, str); strcat(buf2, str_end);
Irgendwie klappt dieser nicht, vermutlich wegen Nullzeichen dazwischen. Konnt Ihr Hinweise geben?
Ciao
pully
-
könnte daran liegen, dass dort nullterminierungen drin sind und danach noch andere zeichen kommen.
Was geht denn genau nicht? Wie sieht das Ergebnis aus?
-
pully schrieb:
Irgendwie klappt dieser nicht, vermutlich wegen Nullzeichen dazwischen. Konnt Ihr Hinweise geben?
Das klappt auch nicht, weil Nullzeichen fehlen.
Du kannst eine Misching aus memcpy und sizeof nehmen.
Soll der Inhalt von str immmer an die 7. Stelle?
-
Solange du mittendrin Nullterminierungen hast, wirst du mit den c-string-funktionen nicht viel freude haben.
Du kannst dir ja ein weiteres Array allokieren und dort Zeichen für Zeichen aus allen anderen Arrays reinkopieren.
-
@It0101: Warum zeichenweise? Das memcpy wurde doch schon genannt.
Wenn alles schon bekannt ist, kann das Array natürlich auch schon während der Compilezeit erstellt werden.
-
Das sind keine Strings, also keine Stringfunktionen verwenden!
unsigned char *ziel = malloc( sizeof(buf2) + sizeof(str) + sizeof(str_end) ); memcpy( ziel, buf2, sizeof(buf2) ); memcpy( ziel+sizeof(buf2), str, sizeof(str) ); memcpy( ziel+sizeof(buf2)+sizeof(str), str_end, sizeof(str_end) ); ... free(ziel);
sollte eine ausführliche Lösungsvariante sein.