PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : strcat für binäre Daten



Beatkiller
18-02-2005, 14:59
Hallo,

ich benötige für ein Projekt eine Funktion mit der ich dynamische Variablen an eine weitere dyn. Variable anhänge. Gibts so was oder wie mach ich das?

locus vivendi
18-02-2005, 16:23
Gibts so was oder wie mach ich das?
Klar, memcpy gibts.

Beatkiller
18-02-2005, 19:38
Klar, memcpy gibts.

Darüber bin ich mir im klaren. Allerdings kopiert memcpy von *src nach *dst mit int Länge. Das bringt mir nicht viel, da ich z.B.

*src1, *src2, *src3 habe und diese nach einander an *dst anhängen will.

Oder kann mir da memcpy doch helfen und ich weiß nur noch nicht wie? :(

Trotzdem Danke, das sich das jemand angeschaut hat.

Gruß

Joghurt
18-02-2005, 20:20
*src1, *src2, *src3 habe und diese nach einander an *dst anhängen will.
Oder kann mir da memcpy doch helfen und ich weiß nur noch nicht wie? :( Anscheinend ja. :p

void* p = dst;
memcpy(p, src1, SIZE1);
p += SIZE1;
memcpy(p, src2, SIZE2);
p += SIZE2;
memcpy(p, src3, SIZE3);

locus vivendi
18-02-2005, 21:36
Lösung wie Joghurt beschrieben hat. memcpy macht halt fast das gleiche wie strcat. Aber in Ermangelung einen Weges die Länge der Daten erkennen zu können muss diese mitangegeben werden. Das ist eben der Unterschied zwischen "Strings" und nur allgemein "Daten".

Beatkiller
18-02-2005, 22:02
Merci!

Das sieht man mal wieder, das ich noch einiges lernen muss :D

Gruß

wraith
18-02-2005, 22:10
Du mußt den void-Pointer p noch auf einen char-Pointer ändern (und dann bei der Zuweisung noch casten am besten auf void*), weil Pointer-Arithmetik mit void-Pointern nicht erlaubt ist. gcc erlaubt das nur durch eine Extension (und verhält sich dann wie ein char-Pointer).

Joghurt
19-02-2005, 13:49
Daran sieht man, dass ich noch einiges lernen muss ;)
Also nochmal korrigiert:
char* p = (char*)dst;
memcpy(p,src1,SIZE1);
p += SIZE1;
...