Brauche Hilfe beim Invertieren eines Strings.



  • Hey Leute,
    kann jemand von euch mir vielleicht sagen was an meinem Code falsch ist?
    Das Programm stürzt leider bei jedem Versuch es zu starten ab 😞

    #include <stdio.h>
    #include <string.h>
    
    void StringReverse(char str[])
    {
        //Abbruch der Funktion falls String leer ist
        if((unsigned) strlen(str)==0)
        {
            return;
        }
    
        //Variablen
        char temp;
        size_t i = strlen(str)-1;
        size_t j;
    
        //Verarbeitung
        for (j=0;i/2>=0; i--, j++)
        {
            temp = str[i];
            str[i] = str[j];
            str[j] = temp;
        }
    
        //Ausgabe
        printf("%s", str);
    
    }
    
    int main(void)
    {
        char text[1000];
        printf("String:");
        scanf("%s",&text);
        StringReverse(text);
        return 0;
    }
    

    für eure Hilfe wäre ich euch sehr dankbar 🙂

    mfg
    Raavgo



  • size_t ist ein vorzeichenloser Typ, i/2>=0 ist also immer wahr. Warum überhaupt /2?



  • Erstmals: %s erwartet einen char-Pointer. Du referenzierst jedoch das Array.

    for (j=0;/*** die Bedingung hier... ===> ***/i/2>=0; i--, j++)
    

    ist falsch. Sie sollte j<i lauten, dann funktionierts auch bestimmt.



  • MFK schrieb:

    size_t ist ein vorzeichenloser Typ, i/2>=0 ist also immer wahr. Warum überhaupt /2?

    Naja hier wird ja die erste und letzte Stelle des Strings bearbeitet darum auch /2.

    gnihihihihi schrieb:

    Erstmals: %s erwartet einen char-Pointer. Du referenzierst jedoch das Array.

    for (j=0;/*** die Bedingung hier... ===> ***/i/2>=0; i--, j++)
    

    ist falsch. Sie sollte j<i lauten, dann funktionierts auch bestimmt.

    Danke für den Tipp 😃


Log in to reply