Función que compara dos cadenas de C.
Sintaxis:
#include <cstring> int strcmp( const char *str1, const char *str2 );
La función strcpm() devuelve el valor siguiente:
| Devuelto | Significado |
|---|---|
| menor que 0 | str1 es menor a str2 |
| igual a 0 | str1 es igual a str2 |
| mayor que 0 | str1 es mayor a str2 |
Las cadenas str1 y str2 se comparan caracter a caracter y el primer caracter donde difieren “propaga” la relación. Un empate se rompe declarando como “menor” a la cadena que tiene menos caracteres. Este tipo de relación entre dos cadenas corresponde a la comparación “de diccionario” o lexicográfica, es decir str1<str2 si str1 viene “antes” en el diccionario que str2 (usando ASCII como el “alfabeto”).
Por ejemplo:
printf( "Enter your name: " ); scanf( "%s", name ); if( strcmp( name, "Mary" ) == 0 ) { printf( "Hello, Dr. Mary!\n" ); }
Nótese que si str1 o str2 no tienen el caracter nulo de terminación (\0), strcmp() producirá resultados incorrectos. La función similar pero más segura, strncmp() puede ser usada para comparar las cadenas con chequeos de rango.
Relacionados: memcmp, strcat, strchr, strcoll, strcpy, strlen, strncmp, strxfrm
En STL el algoritmo lexicographical_compare extiende esta relación a “cadenas” de cualquier tipo.