Computación y electrónica

El lenguaje C para la función Strcmp

Escrito por g.s. jackson | Traducido por valeria garcia
El lenguaje C para la función Strcmp

Determinar la igualdad de cadena en C significa comparar cada uno, carácter por carácter.

Ablestock.com/AbleStock.com/Getty Images

C++ ya contiene una función de la comparación de la cadena, "strcmp()", la cual realiza la tarea de comparar dos cadenas para la igualdad. La función strcmp() devuelve valores diferentes dependiendo de la relación de las cadenas de uno al otro. La implementación de una función strcmp() difiere entre las arquitecturas de computadora (o permanece bajo licencia de distintos proveedores), pero un programador puede implementar la funcionalidad básica del código para ver cómo funciona. Sin embargo, para entender la función, el programador debe entender cómo las cadenas, matrices y punteros funcionan en C y C++.

Otras personas están leyendo

Cadenas, matrices y punteros

En C, las cadenas son colecciones (o conjuntos) de caracteres. Por ejemplo, char string[10]; Como en una matriz de 10 caracteres, la "cadena" representa una sentencia en C. Sin embargo, las matrices son en realidad punteros, o variables, refiriéndose a la dirección de memoria. La matriz "string" representa en realidad un puntero al primer elemento en el bloque de memoria, y el programador puede hacer referencia a los otros elementos de la matriz a través de este indicador.

Definiendo "strcmp()"

La definición básica de una función strcmp se verá similar a esto: int strcmp (const char * str1, const char * str2); Por definición, una función de comparación de cadenas utilizará dos matrices de caracteres (str1, str2). Dado que las matrices representan punteros, la definición llevará dos punteros de carácter. Con estos consejos, el programador puede comprobar cada elemento de una matriz contra otra matriz. En primer lugar, sin embargo, el programador debe declarar dos variables de carácter, que contendrán los valores encontrado en las dos cadenas: int strcmp(const char *str1, const char *str2){ char a, b; }

Cruzando las cadenas

Con el fin de comparar las cadenas, la función debe comparar cada personaje en cada cadena una con otra. Para ello, el programador utiliza los dos punteros (str1, str2) para desplazarse hacia abajo de cada matriz: while(*str1 != '\0' && *str1 == *str2){ str1++; //esto mueve el puntero de la cadena str1 a próximo carácter str2++; //hace lo mismo para str2 } Mientras que el bucle realiza la búsqueda: primero, si str1 llega a un caracter de terminación ("\0" el cual se anexa al final de la cadenas del lenguaje C), entonces el bucle se corta, ya que se completa la cadena. Segundo, si el valor de cad1 (* str1) no es igual al valor de str2 (* str2), entonces el bucle se detiene, ya que las cuerdas son desiguales.

Regresando el resultado

Strcmp devuelve uno de los tres resultados: 0 (si las cadenas son iguales), 1 (si el primero es mayor que el segundo) y -1 (si el primero es menor que el segundo): char a = *str1; char b = *str2; if (a == b) {return 0;} else {return ((a < b) ? -1 : 1);} Puesto que los bucles se detienen cuando hay desigualdad o cuando ambos hayan terminado, el resultado terminará siendo dos caracteres iguales (el símbolo '\0') o los caracteres desiguales encontrados.

Código completo

El código completo, entonces, es similar a esto (y las implementaciones variarán, dependiendo de las condiciones de la técnica o sistema): nt strcmp(const char *str1, const char *str2){ char a, b; while(*str1 != '\0' && *str1 == *str2){ str1++; //mueve el puntero de la cadena str1 al próximo caracter str2++; //hace lo mismo, para str2 } char a = *str1; char b = *str2; if (a == b) {return 0;} else {return ((a < b) ? -1 : 1);} } ingresando dos cadenas tales como: char string1[40] = "Esta es la cadena"; char string2[40] = "Esta es la cadena"; int result = strcmp(string1, string2); will return 0;

Más galerías de fotos

comentarios

Filtrar por:
  • Mostrar todos
  • Artículos
  • Galerías de fotos
  • Videos
Ordenar:
  • Más relevante
  • Más popular
  • Más reciente

No se encuentran artículos disponibles

No se encuentran slideshows disponibles

No se encuentran videos disponibles

Copyright © 1999-2014 Demand Media, Inc. Acerca de

El uso de este sitio constituye la aceptación de los términos y política de privacidad de eHow. Ad Choices es-US

Demand Media