“Conocimientos Programación>C /C + + Programming

C para la función Strcmp

2014/2/28
C + + ya contiene una función de comparación de cadenas - " strcmp ()" - que lleva a cabo la tarea de comparar dos cadenas de la igualdad. El strcmp ( ) devuelve valores diferentes en función de la relación de las cuerdas entre sí . La ejecución de una función strcmp () difiere entre las arquitecturas de ordenador ( o permanece bajo licencia de diferentes proveedores ), pero un programador puede volver a implementar la funcionalidad básica del código para ver cómo funciona. Comprender la función, sin embargo , el programador debe entender cómo funcionan las cadenas, matrices y punteros en C y C + + . Strings , Arrays y punteros

En C , las cadenas son colecciones ( o arrays) de caracteres. Por ejemplo ,

cadena char [ 10 ] ;

una matriz de 10 caracteres , " cadena" representa una sentencia en C. Sin embargo , las matrices son realmente indicadores o variables que se refieren a la dirección de memoria . El array " cadena" representa en realidad un puntero al primer elemento del bloque de memoria , y el programador puede hacer referencia a los otros elementos de la matriz a través de este puntero.
Definición " strcmp ()"

La definición básica de una función strcmp será similar a esta :

int strcmp (const char * cadena1 , cadena2 const char * ) ;

Por definición, un función de comparación de cadenas se utilizan dos matrices de caracteres ( cadena1 , cadena2 ) . Dado que las matrices representan indicadores, la definición tendrá dos punteros a carácter . Con estas indicaciones , el programador puede comprobar cada elemento de una matriz contra la otra matriz. En primer lugar, sin embargo, el programador debe declarar dos variables de carácter, que contendrá los valores encontrados en las dos cadenas :

int strcmp (const char * cadena1 , const char * cadena2 ) {

caracteres a, b ;

}
Atravesar la Strings

con el fin de comparar las cadenas , la función debe comparar cada personaje en cada cadena a la otra. Para ello , el programador utiliza los dos punteros ( cadena1 , cadena2 ) para bajar cada matriz :

while ( * str1 = '\\ 0 ' && * str1 == str2 * ) {
< p> str1 + + ; //se mueve el puntero del str1 cadena al siguiente carácter

cadena2 + + //hace lo mismo , str2

}

el bucle while hace el buscar : en primer lugar , si str1 visitas al carácter de terminación ( " \\ 0 ", que se adjunta al final de las cadenas por el lenguaje C ) , a continuación, el bucle se cierra , ya que esa cadena se hace . En segundo lugar, si el valor de cadena1 (* str1 ) no es igual al valor de str2 (* str2 ), el bucle se detiene , porque las cadenas son iguales .
Devolviendo el resultado

Strcmp devuelve uno de 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 ) :
< p> char a = * str1 ;

caracteres * b = cadena2 ;

if ( a == b )

{return 0 ;}

más

{return ( (a < b ) -1 : 1 ) ;}

Desde los bucles se detienen cuando hay desigualdad o cuando ambos están acabados , el resultado va a terminar como dos personajes iguales ( el '\\ 0 ' símbolo) o los caracteres desiguales encontrados.
código completo

el código completo y, a continuación , se parece a esto (y las implementaciones puede variar, dependiendo de la técnica o de las condiciones del sistema ) :

int strcmp (const char * cadena1 , const char * cadena2 ) {

char a , b;

while ( ! * str1 = '\\ 0 ' && * str1 == str2 * ) {

str1 + + ; //se mueve el puntero de la cadena str1 al siguiente carácter

cadena2 + + //hace el misma , str2

}

char a = * str1 ;

caracteres * b = str2 ;

if ( a == b )

{return 0 ;}

más

{return ( (a < b ) -1 : 1 ) ;} }


< p > ingresar dos cadenas , como

caracteres cadena1 [ 40 ] = " Esto es una cadena " ;

caracteres cadena2 [ 40 ] = " Esto es una cadena " ;

int resultado = strcmp ( cadena1, cadena2 ) ;

devolverá 0 ;

C /C + + Programming
Cómo utilizar cadenas como entrada desde el teclado en matrices bidimensionales con C Programas
Cómo crear proyectos mediante programación C
Cómo leer A partir de un archivo externo en C + +
¿Por qué no puede ver mi Xcode iPhone
Cómo crear un IRC Spybot
Cómo limpiar un buffer de entrada en C + +
Cómo aprender a codificar un microcontrolador en C
Cómo calcular octal a binario Conversión
Conocimientos Informáticos © http://www.ordenador.online