strlen
-
Hi,
warum geht den diese Funktion hier nicht? Ich bekomme immer so ne komische Fehlermeldung!
int mystrlen(char *mya){ int ln; for(ln=0;*mya !="\0"; mya++) ln++; return ln; }
Könnte ich auch bitte eine erklärung dafür haben?
Vielen Dank schon mal!
mfg Lucas
-
was fuer ne Fehlermeldung bekommst du denn?
Tipp:
"test"=="test"
ist false
um strings zu vergleichen nimmt man strcmpbzw. du brauchst nen char statt nen char*
*my!='\0'
-
Ich habe Deinen Source nicht geändert, Folgendes sollte jedoch gehen:
#include <stdio.h> char txt[10]="hallo"; int mystrlen(char *mya) { int ln; for(ln=0; *mya!='\0'; mya++) ln++; return ln; } int main (void) { printf("%d", mystrlen(txt)); return 0; }
-
Original erstellt von <Lucas>:
**Hi,int mystrlen(char *mya){ int ln; for(ln=0;mya[ln] !="\0";) ln++; return ln; }
probiers ma so **
-
Wie wärs damit:
unsigned int strlen(char *str) { unsigned int count = 0; while (*str++) count++; return count; }
-
++count;
-
Oder so?
int x_strlen (char *txt) { char *pt; /* Zeiger ans Ende der Zeichenkette bringen */ for (pt=txt; *pt; pt++); /* Differenz zurükgeben */ return (pt-txt); }
So stehts zumindest in meinem buch
-
Wenn hier schon jeder seine Lieblingsimplementierung von strlen ins Rennen wirft, könntet ihr dann bitte die richtigen Prototypen raussuchen? Sonst meint noch jemand, const und size_t seinen in C absolut sinnfrei :).
-
Also die sind nicht sinnfrei aber in meinem C Buch stand es so als Beispiel für n' Anfänger drinne!
Aber in einem Listing hatten die eine Header-Datei vergessen
-
Es muß heißen
for(ln = 0; *mya != '\0'; mya++) /*Vergleich char mit char ==> OK*/
anstatt
for(ln = 0; *mya != "\0"; mya++) /*Vergleich char mit char* ==> Fehler!*/
-
Noch einfacher natürlich
for(ln = 0; *mya; mya++)
-
Krösus hat natürlich Recht kA macht den
gleichen Fehler wie du.
Man muss zwischen 'x' (Zeichenkonstante stellt einen
ganzzahligen Wert dar)
und "x" (Zeichenvektor inklusive Terminator '\0') unterscheiden.