Funktion("TEXT") => Frage zu "TEXT"



  • Hallo!

    printf(Funktion("Text")) => ich möchte nun auf "Text" zugreifen und diesen in der Funktion verändern!
    Geht das? Ist ja soweit ich weiß const char*

    void Funktion(char *txt)
    {
    if(strlen(txt)>0) txt[0]='!';
    }

    Geht darum, den Text immer gleich in das C Programm reinschreiben zu können, und dann erst auf die Codepage zu konvertieren, die Drucker oder LCD verwendet.



  • Das geht so einfach nicht - "Text" ist ein Stringliteral; was du da vorhast, ist etwa so, als würdest du

    1 = 2;
    

    schreiben.

    Wenn du in etwas rumschreiben willst, musst du sicherstellen, dass es in Speicher liegt, der dir gehört. Die einfachste Methode, das zu tun, ist

    char mein_buffer[] = "Text";
    
    printf(Funktion(mein_buffer));
    

    zu schreiben. Damit wird ein Bereich auf dem Stack angelegt und mit "Text" initialisiert - darin kannst du dann herumschreiben, soviel du willst. Du musst aber vorsichtig sein, dass du nicht über das Ende des Buffers hinausschreibst, sonst kann alles mögliche passieren. Mit [] wird der Buffer genau so lang gemacht, dass "Text" genau hineinpasst (5 Byte); wenn du etwas hintendran hängen willst, musst du eine entsprechend höhere Grenze setzen, etwa

    char mein_buffer[100] = "Text"; /* Platz für 100 Byte, d.h. 99 Buchstaben + Sentinel */
    


  • Ja habs fast befürchtet dass es ohne Buffer nicht geht.
    Danke!


Log in to reply