String in Char ablegen



  • Hi,

    Wie kann ich eine String, von unbekannter größe, am besten in einem char ablegen.
    Bzw. wie definiere ich dann diese Variable.

    Danke



  • ein char kann nur ein einzelnes zeichen enthalten. für einen string muss man zu einem char array greifen

    char string[irgendeinegrösse];
    

    in der regel kann man vorher wissen wie gross der string maximal wird, dann legt man die grösse so fest. sonst muss man den speicher dynamisch per malloc etc. verwalten und die grösse gegebenenfalls anpassen.



  • Ich muss eine URL in einen String ablegen, die vom Benutzer bestimmt wird. Das ist dann ein variabler Wert, da kann ich keine größe vorher bestimmen. Wie gehe ich denn dann dabei vor?



  • Aber auch bei einer URL müsstest Du doch einen sinvollen Wert für die maximale Länge der Eingabe finden können.
    Wenn mehr Zeichen eingegeben werden, als in das Array passen, wird die URL zwar abgeschnitten, aber wenn das Array groß genug ist, sollte das bei einer sinnvollen Eingabe nicht passieren. Wenn weniger Zeichen eingegeben werden, bleibt natürlich etwas Speicherplatz ungenutzt, aber auch das sollte zu verschmerzen sein.
    Ansonsten müsstest Du herausfinden, wieviele Zeichen im Input-Buffer der Konsole (oder wo die Eingabe "herkommt") liegen, und dann dementsprechend viel Speicherplatz reservieren, wie japro schon sagte.



  • orbit schrieb:

    Ich muss eine URL in einen String ablegen, die vom Benutzer bestimmt wird. Das ist dann ein variabler Wert, da kann ich keine größe vorher bestimmen. Wie gehe ich denn dann dabei vor?

    10: x Byte einlesen und in den string schreiben
    schauen ob noch mehr Byte da sind
    wenn ja, goto 10



  • 10: x Byte einlesen und in den string schreiben
    schauen ob noch mehr Byte da sind
    wenn ja, goto 10

    Trotzdem muss er bei deiner "Lösung" auch die Größe des "string" kennen! Sehr clever 😉



  • rofl schrieb:

    Trotzdem muss er bei deiner "Lösung" auch die Größe des "string" kennen! Sehr clever 😉

    hmm wo ist das problem. man liest eine bestimmte anzahl zeichen per fgets ein. mit feof kann man dann bestimmen ob schon alles eingeselesen wurde. wenn nicht vergrössert man den string und liest wieder zeichen ein. bis man das ende des inputs erreicht hat.


Anmelden zum Antworten