title image


Smiley Frage zu einem Codefragment?
Hallo,



der untenstehende Code ist eine reimplementierung der Funktion strlen() aus der libc.

Soviel ist mir schon klar. Was ich aber nicht verstehe, ist wie dieser Code funktioniert! Warum wird, um die länge eines Strings zu bestimmen, viermal eine IF-Schleife durchlaufen? Und es gibt viermal einen return Wert, warum?

Die strlen-Funktion aus der Linux glibc macht das anders, dort verstehe ich auch was passiert, nur hier nicht. Angeblich soll diese Funktion unten, sehr schnell, und sicher sein?!

Ich hoffe, irgendjemand kann mir diese Funktion mit einfachen Worten erklären?



Tausend Dank,

samba





Hier der Code:



extern unsigned int str_len();



unsigned int str_len(s)

register char *s;

{

register char *t;



t = s;

for (;;) {

if (!*t) return t - s; ++t;

if (!*t) return t - s; ++t;

if (!*t) return t - s; ++t;

if (!*t) return t - s; ++t;

}

}

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: