verstaendnis problem strlen()



  • kleines verständniss problem, das programm kehrt die reihenfolge der zeichen des strings um, letztes zu erstes usw.
    Meine Frage ist jetzt warum wird strlen-1 gesetzt!? Dachte erst das sei wegen \0 zeichen aber strlen gibt die laenge ohne \0 zeichen zurück. Nimmt man -1 weg wird nur eine leere zeile ausgegeben !?

    #include <stdio.h>
    #include <string.h>

    void strReverse( char *str )
    {
    char ch;
    int i;
    int j;

    for( i=0, j=strlen(str)-1; i<j; ++i, --j)
    {
    ch = str[i], str[i] = str[j], str[j] = ch;
    }
    printf(" %s\n ", str);
    }

    int main()
    {

    char vektor[512] = "string";
    char *ptr;

    ptr = vektor;

    strReverse(ptr);

    return 0;
    }



  • Es ist wegen des Sentinels. Array-Indices sind nullbasiert, das heißt, das erste Zeichen des Strings steht an str[0], das letzte an str[strlen(str) - 1].



  • ist mir eig bekannt, konnte es irgendwie nicht zusammenbringen
    danke für die antwort


Anmelden zum Antworten