Anzeige:
Ergebnis 1 bis 8 von 8

Thema: strcat für binäre Daten

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.06.2004
    Beiträge
    101

    strcat für binäre Daten

    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?

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Gibts so was oder wie mach ich das?
    Klar, memcpy gibts.

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.06.2004
    Beiträge
    101
    Zitat Zitat von locus vivendi
    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ß

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von Beatkiller
    *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.
    Code:
    void* p = dst;
    memcpy(p, src1, SIZE1);
    p += SIZE1;
    memcpy(p, src2, SIZE2);
    p += SIZE2;
    memcpy(p, src3, SIZE3);

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    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".

  6. #6
    Registrierter Benutzer
    Registriert seit
    24.06.2004
    Beiträge
    101
    Merci!

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

    Gruß

  7. #7
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486
    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).

  8. #8
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Daran sieht man, dass ich noch einiges lernen muss
    Also nochmal korrigiert:
    Code:
    char* p = (char*)dst;
    memcpy(p,src1,SIZE1);
    p += SIZE1;
    ...

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •