String umkehren null rausnehmen



  • Hallo an alle,

    ich muss ein Programm schreiben, wo ein string eingelesen wird und danach umgekehrt ausgegeben werden soll.

    Wie kann ich die \0(hoffe es ist die richtige schreibweise), die an das ende gesetzt wird löschen?
    Wie kann ich in das Feld reinschauen?

    Viele Grüße



  • sly020 schrieb:

    Wie kann ich die \0(hoffe es ist die richtige schreibweise), die an das ende gesetzt wird löschen?

    Warum willst du die löschen?

    sly020 schrieb:

    Wie kann ich in das Feld reinschauen?

    Über den []-Operator.



  • void RueckwaertsAuslesen(char* String)
    {
        char* Ende = String+strlen(String)-1; 
    
        for(char* c = Ende;c >= String;c--)
    	printf("%c",*c);
    }
    
    char* Ende = String+strlen(String)-1;
    

    bewirkt,dass \0 nicht ausgegeben wird,da der Zeiger auf das Zeichen davor zeigt.



  • Warum willst du die löschen?

    In der Vorlesung war die Rede, das wenn ich einen String einlese am ende automatisch eine 0 oder ähnliches drangehängt wird, welches bewirkt oder anzeigt das es das ende vom String ist. Wenn ich den String einfach umkehre, dann kommt ja diese null nach vorne und ich sehe keinen Text oder?



  • Wenn du den String mitsamt der \0 umdrehen würdest, hast du natürlich recht. Aber genau das brauchst du ja nicht machen. es reicht ja wenn du nur die anzuzeigenden Zeichen umdrehst und die \0 einfach stehen lässt. Aber eigentlich musst du den String ja nichtmal (im Speicher) umdrehen, sondern nur "von hinten" ausgeben, z.B. so wie es Programmierer schon gezeigt hat.

    Eine andere Möglichkeit wäre mittels Rekursion, aber ich weiss nicht ob ihr im Stoff schon so weit seid.

    void print_rev (const char *string) {
        if (*string) {
            print_rev (string+1);
            putchar (*string);
        }   
        return;
    }
    

Anmelden zum Antworten