Mit malloc und memcpy ein char* in Form von "temp\0temp2\0\0" erstellen??



  • Hallo Forum,

    I habe zwei Strings:
    string temp1;
    string temp2;

    Und moechte sie mit Hilfe von malloc und memcpy
    in diese Form speichern.

    "temp\0temp2\0\0"

    Aber wie geht das??
    Kann mir jemand helfen??

    Danke,
    Mah



  • wo ist den dein Problem? Zeig mal deinen Code.



  • char *buffer;
            wxString temp;
            size_t last;
            for (i=0; i<2; i++) {
    
                   size_t n = multi_selected_file_path[i].Len();
                   n++;
                   last += n;
                   memcpy(buffer, multi_selected_file_path[i].c_str(), n);
                   buffer[last] = '\0';
            }
            last++;
            buffer[last] = '\0';
    

    Aber so kriege ich immer noch nicht die gewuenschte Form "temp\0temp2\0\0"

    Danke,
    Mah



  • Hallo,

    bei deinem Code, muesste es eigentlich eine Speicherzugriffsverletzung geben,
    denn du reservierst nirgends Speicher fuer die Variable 'buffer'.

    Da benoetigst du vorher noch ein

    buffer = malloc(<zu_reservierende_groesse>);
    

    mfg
    v R



  • Hallo,

    danke fuer deine schnelle ANtwort,
    aber kann man irgend wie den Speicherplatz staendig erweitern.
    Weil ich nicht weiss was alle strings zusammen fuer eine Groesse haben.
    Ich weiss nur in jedem for-Vorgang wie gross ein String ist. D.h. ich muss buffer immer vergroessern???

    Aber wie geht das??

    Danke,
    Mah



  • Hallo,

    sollte der Platz nicht mehr ausreichen, hast du die Moeglichkeit, mittels
    realloc den Speicher zu vergroessen, oder auch zu verkleinern.

    Mehr zu der Funktion solltest du in deiner Dokumentation finden.

    mfg
    v R


Anmelden zum Antworten