8.3.09

libreria de cadenas de C (II)

strcmp: devuelve 0 si las dos cadenas son iguales, un numero menor que 0 si la segunda es "mayor" que la primera y mayor que cero si la primera es "mayor" que la segunda.

int
strcmp(char *s1, char *s2)
{
unsigned c1, c2;

for(;;) {
c1 = *s1++;
c2 = *s2++;
if(c1 != c2) {
if(c1 > c2)
return 1;
return -1;
}
if(c1 == 0)
return 0;
}
}

Lo interesante del código es que casi no necesita explicación, y seria bastante difícil hacerlo de una forma mejor o mas corta, solo si c1 es igual a c2 se pasará al segundo if, si además c1==0 también c2==0, es decir que las dos cadenas han terminado y son iguales.

Una curiosidad es que se suele poner el tipo que devuelve la función en una linea separada y así poder buscar mas fácilmente con grep.

No hay comentarios: