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