zeichenkettenplatz vergroessern !?!?!



  • wie vergroessert man eigentlich ein string !??!?

    mein problem ist ich habe ein string (also char 😉 und wie folgt initialisiert...

    char *init_str = "initial_string";
    char *anhaengsel = "det_kommt_dazu";
    char *str = (char *)malloc(strlen(init_str)+1 * sizeof(char));
    // nu str vergroessern wollen ...
    str = (char *) realloc((strlen(init_str)+strlen(anhaengsel))+1 * sizeof(char));
    strcat(str, anhaengsel);
    

    da schmiert mir mein programm ab... nur WARUM !?!?!?!?!?!?!

    vielen dank.

    mit malloc fuer dieses platz besorgt undzwar



  • du solltest den init_str vorher in den str-Buffer kopieren, dann klappt das auch 🙂



  • welcher string-buffer !?!?!

    danke.



  • nicht string-buffer, str-buffer. str ist eine Variable bei dir. Du erwartest wahrscheinlich, dass init_str magisch in str landet, aber das ist nicht der Fall, du mußt erst die richtigen Zaubersprüche sprechen.



  • ups .. hatte ich vergessen aber die zeile ist bei mir im programm da !

    also an passender stelle ..
    strcpy(str, init_str);

    das obige fragmentchen ist nur ein kleiner auszug (entsprechend vereinfacht) aus nem grossen programm welches abschmiert

    das obige bekomme ich aber compiliert und laeuft auch .. nur warum dann in eigentlichem programm absturz weiss ich nicht (muss noch bisl nachforschen)

    trotzdem danke.

    (wens interessiert der absturz scheint genau dann zu passieren, wenn ich in den neu allozierten speicherbereich (mit realloc) hineinschreiben will mit strcat(str, anhaengsel);

    !?!?!



  • dein realloc-Aufruf sieht auch recht komisch aus. Wenn du hier nicht den Code bringst, der auch den Fehler produziert, bringt das überhaupt nichts.



  • warum soll der aufruf von realloc komisch sein !?

    ich brauche als argument von realloc den zeiger (string) dessen platz vergroessert werden soll, und die neue groesse, die bei mir laenge des alten strings + laenge des angehaengten ist (danach noch +1 wengen \0)

    warum is das komisch?

    danke vorab.



  • der alte Zeiger ist bei dir nicht als Argument aufgeführt

    => dein Code compiliert nicht

    => dein Code ist nicht identisch mit dem, der dir Probleme bereitet

    => dein Code ist nutzlose, um dein Problem zu lösen.

    => Poste minimalen Code, der das Problem illustriert.


Anmelden zum Antworten