Einfach mal lesen...
strlen gibt die Laenge des C-Strings ohne Stringbegrenzer zurueck,
sizeof gibt die Groesse des Arrays zurueck. Das sind verschiedene Dinge.
1 | #include <stdio.h>
|
2 | #include <string.h>
|
3 |
|
4 | int main(int argc, char *argv[])
|
5 | {
|
6 | char x[200] = "Hallo";
|
7 |
|
8 | printf("strlen: %i\n", strlen(x));
|
9 | printf("sizeof: %i\n", sizeof(x));
|
10 |
|
11 | return 0;
|
12 | }
|
strlen gibt 5, sizeof 200 zurueck.
Der Unterschied sollte halbwegs offensichtlich sein.
Peter schrieb:
> strlen gibt nicht die korrekte Länge des Strings zurück.
>
> sizeof gibt die korrekte Länge des Array zurück (Stringlänge plus 1).
strlen gibt die korrekte Laenge des Strings zurueck, und sizeof die
Laenge des Arrays. Wie in meinem Beispiel gezeigt, kann der String
deutlich kuerzer sein als das Array.
Du musst schon wissen was du willst. Willst du die Laenge des Strings
oder die Groesse des Arrays?