C / Pointer: Wie kann ich einen eingegebenen String umdrehen?

1 Antwort

Du könntest mit strlen arbeiten

siehe

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char* string_converter(char *your_string){
        int n = 0;
        int i;
        char *new_string;
        while (*(your_string + n)){
                ++n;
        }
        new_string = malloc(n + 1);
        for (i = 0; i <= n; ++i){
                *(new_string + i) = *(your_string+strlen(your_string)-i-1);
        }
        return new_string;
}




int main()
{
    printf("%s",string_converter("Hallo"));


    return 0;
}
Woher ich das weiß:Studium / Ausbildung – Informatikstudent
frage2345707 
Fragesteller
 18.01.2022, 18:55

Erstmal vielen Dank für die schnelle Antwort. Ich verstehe diese Zeile noch nicht ganz: your_string+strlen(your_string)-i-1

0
whgoffline  18.01.2022, 18:59
@frage2345707

Warte mal. Noch besser wäre

your_string+n-i-1

Dann musst du string.h auch nicht einbinden.

Nun zur erklärung

du hast ja an der Aderesse von your_string den ersten Buchstaben von Hallo stehen.

Also

*(your_string+0) => H

*(your_string+1) => a

usw.

und an your_string+n denn Nullterminierer.

Gehst du jetzt also in den ersten Schleifendurchlauf mit i = 0

ergibt sich your_string+n-0-1, also 1 Zeichen hinter dem Nullterminierer, was dir dir das o von Hallo gibt.

0
frage2345707 
Fragesteller
 18.01.2022, 19:03
@whgoffline

so hatte ich es in meinem code (oben) auch aber funktioniert so irgendwie nicht. also ergibt eine falsche ausgabe

0
frage2345707 
Fragesteller
 18.01.2022, 19:05
@frage2345707

*(your_string+strlen(your_string)-i-1) hiermit geht es, aber warum nicht mit meiner Variante?

0