char* mit char* vergleichen
-
hi leute
ich möchte zwei char* s1, s2 vergleichen. Ein direkt vergleich (s1 == s2) funktioniert nicht. Daher hab ich mir überlegt einfach über die länge durch zu iterieren und jeweils die zwei einzelnen chars zu vergleichen. Aber wie bekomme ich die länge heraus?
Ich hab versucht über sizeof(s1) die länge herauszubekommen, aber irgendwie liefert er keine zahl zurück die der anzahl der character in s1 entspricht.
Dabei dachte ich immer dass ein char genau 1 byte benötigt. Daher schlussfolgerte ich dasAnzahl der Character von s1 == sizeof(s1)....
Aber offensichtlich nciht...Wie bekomme ich also die anzahl der character raus?
oder
Hat jemand ne bessere idee wie ich zwei char* vergleichen kann (z.b. typecast zu string) ?
-
http://www.acm.uiuc.edu/webmonkeys/book/c_guide schrieb:
2.14.10 strcmp
Declaration:
int strcmp(const char *str1, const char *str2);
Compares the string pointed to by str1 to the string pointed to by str2.
Returns zero if str1 and str2 are equal. Returns less than zero or greater than zero if str1 is less than or greater than str2 respectively.
-
strlen, strcmp, usw. Sollte aber in den Kursunterlagen/Buch drinstehen.
-
sizeof(s1) gibt dir die grösse des char-pointers zurück, nicht dessen Länge
http://www.acm.uiuc.edu/webmonkeys/book/c_guide schrieb:
2.14.17 strlen
Declaration:
size_t strlen(const char *str);
Computes the length of the string str up to but not including the terminating null character.
Returns the number of characters in the string.
-
1310-Logik schrieb:
sizeof(s1) gibt dir die grösse des char-pointers zurück, nicht dessen Länge
aha, und was ist der unterschied zwischen 'länge' und 'grösse'?
-
Korrekt müsste es lauten "sizeof gibt die Größe eines char-Pointers zurück, nicht die Länge des Strings auf dessen Anfang er zeigt"
Besser?
-
*huch*
da hab ich wohl den Satz nicht zu Ende gedacht..
buffer overflow im Sprachzentrum, kein Wunder bei der Hitze
-
LordJaxom schrieb:
Besser?
allemal