C - Grundverständniss auffüllen (Strings)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • C - Grundverständniss auffüllen (Strings)

    Hey,
    ich würde gerne wissen, wie ihr Strings miteinander zur Laufzeit verbindet.
    Zur Laufzeit lese ich mehrere Strings unbekannter Länge ein (maximum 254 + '\0'). Diese Strings verbinde ich zu einem großen. Die Strings benötige ich danach nicht mehr.

    Zwei Möglichkeiten sind mir bekannt:
    1. Einfach initialisieren

    Quellcode

    1. char buffer1[256];
    2. char buffer2[256];
    3. char buffer3[256];
    4. char buffer4[763]; // 254+254+254+'\0'

    In einer Schleife kann ich dann die Buffer befüllen und mit strcat in buffer4 schreiben. Da ich den Speicher danach nicht mehr brauche habe ich aber 738 Byte verschenkt. Das ist nicht viel - mir geht es aber um das Prinzip und korrekte Verständnis - sowas könnte ja auch mal in "größer" auftreten.

    2. malloc
    Ich kann mir natürlich auch nur Pointer initialisieren und dann den benötigten Speicher dynamisch reservieren. Danach wird er mit free(*ptr); wieder frei gegeben.

    3. ???
    Aus anderen Sprachen kenne ich es natürlich sehr faul:

    Quellcode

    1. $var = getString() . getString() . getString(); //PHP

    Quellcode

    1. var = getString() + getString() + getString(); //Java

    So eine Möglichkeit kenne ich unter C leider (noch) nicht.


    Evtl. könnt ihr mich zu der Vorgehensweise zum Thema "Strings in C verknüpfen" ein wenig aufklären. Ein "char buffer[1000]" akzeptiere ich allerdings nicht - ausgenommen jemand kann mir (sehr gut) erklären warum das Sinn macht...
    My lovely mister singing club...
  • Hi,

    derzeit geht es mir um reines C. C++ kommt später dran.
    Was soll ich bei Quelltext groß zeigen? Ich habe drei Strings die ich mit fsprint jeweils auslese und aneinander hänge. Mir geht es hier um ein Grundverständnis. Also: Welche Methodik sich besser anbietet und diverse Meinungen dazu. So kann man sich seine eigene Meinung bilden...

    Gruß,
    Nick
    My lovely mister singing club...
  • In C++ sieht es nicht viel anders aus als in Java und PHP.

    In purem C bevorzuge ich je nach Aufgabengebiet deine erste Methode. Solange es keine großen Datenmengen werden können meiner Meinung nach diese auf dem Stack verweilen und man spart sich mehr oder weniger Rechenzeit mit der Anforderung von Speicher.
    (Kein Plan welche Methode nun schneller oder langsamer ist, ich gehe davon aus)

    Bei größeren Daten ist es sicher Besser das ganze dynamisch Anzufordern und unter Umständen bei nicht ausreichendem Platz kontinuierlich zu vergrößern. (Stichwort: capacity <-> size)

    Mfg Rushh0ur