strcmp
, wcscmp
, , _mbscmp
, _mbscmp_l
Compare cadenas.
Importante
_mbscmp
y _mbscmp_l
no se pueden usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.
Sintaxis
int strcmp(
const char *string1,
const char *string2
);
int wcscmp(
const wchar_t *string1,
const wchar_t *string2
);
int _mbscmp(
const unsigned char *string1,
const unsigned char *string2
);
int _mbscmp_l(
const unsigned char *string1,
const unsigned char *string2,
_locale_t locale
);
Parámetros
string1
, string2
Cadenas terminadas en NULL que se van a comparar.
locale
Configuración regional que se va a usar.
Valor devuelto
El valor devuelto para cada una de estas funciones indica la relación ordinal de string1
respecto a string2
.
Valor | Relación de string1 constring2 |
---|---|
< 0 | string1 es menor que string2 . |
0 | string1 es idéntica a string2 . |
> 0 | string1 es mayor que string2 |
Si se produce un error de validación de parámetros, _mbscmp
y _mbscmp_l
devuelven _NLSCMPERROR
, que se define en <string.h>
y <mbstring.h>
.
Comentarios
La función strcmp
realiza una comparación ordinal de string1
y string2
y devuelve un valor que indica su relación. wcscmp
y _mbscmp
son, respectivamente, versiones de caracteres anchos y multibyte de strcmp
. _mbscmp
reconoce secuencias de caracteres multibyte según la página actual de códigos multibyte y devuelve _NLSCMPERROR
cuando se produce un error. _mbscmp_l
tiene el mismo comportamiento, pero usa el parámetro de configuración regional que se pasa en lugar de la configuración regional actual. Para obtener más información, vea Páginas de códigos. Además, si string1
o string2
es un puntero nulo, _mbscmp
invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, _mbscmp
y _mbscmp_l
devuelven _NLSCMPERROR
y establecen errno
en EINVAL
. strcmp
y wcscmp
no validen sus parámetros. Por lo demás, estas funciones se comportan exactamente igual.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Asignaciones de rutinas de texto genérico
Rutina TCHAR.H |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
Las strcmp
funciones difieren de las funciones de que strcmp
las strcoll
comparaciones son ordinales y no se ven afectadas por la configuración regional. strcoll
compara las cadenas de manera lexicográfica usando la categoría LC_COLLATE
de la configuración regional actual. Para más información sobre la categoría LC_COLLATE
, consulte setlocale
, _wsetlocale
.
En la configuración regional "C", el orden de los caracteres del juego de caracteres (juego de caracteres ASCII) es el mismo que en los caracteres lexicográficos. Sin embargo, en otras configuraciones regionales, el orden de los caracteres del juego de caracteres puede diferir del orden lexicográfico. Por ejemplo, en algunas configuraciones regionales europeas el carácter "a
" (valor 0x61) precede el carácter "ä
" (valor 0xE4) en el juego de caracteres, pero el carácter "ä
" precede el carácter "a
" lexicográficamente.
En las configuraciones regionales en las que el orden del juego de caracteres y el lexicográfico difieran, puede usar strcoll
en lugar de strcmp
para realizar la comparación lexicográfica de cadenas. Como alternativa, puede usar strxfrm
en las cadenas originales y después usar strcmp
en las cadenas resultantes.
Las funciones strcmp
distinguen entre mayúsculas y minúsculas. _stricmp
, _wcsicmp
y _mbsicmp
comparan cadenas convirtiéndolas primero en su forma minúscula. Dos cadenas que contiene caracteres situados entre la "Z" y la "a" en la tabla ASCII ("[
", "\\
", "]
", "^
", "_
" y '`
") se comparan de forma diferente, según sus mayúsculas y minúsculas. Por ejemplo, las dos cadenas "ABCDE
" y "ABCD^
" se comparan de un modo si la comparación es en minúscula ("abcde
" > "abcd^
") y del otro ("ABCDE
" < "ABCD
^") si la comparación es en mayúscula.
Requisitos
Routine | Encabezado necesario |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> o <wchar.h> |
_mbscmp |
<mbstring.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Bibliotecas
Todas las versiones de las bibliotecas en tiempo de ejecución de C.
Ejemplo
// crt_strcmp.c
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";
int main( void )
{
char tmp[20];
int result;
// Case sensitive
printf( "Compare strings:\n %s\n %s\n\n", string1, string2 );
result = strcmp( string1, string2 );
if( result > 0 )
strcpy_s( tmp, _countof(tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, _countof (tmp), "less than" );
else
strcpy_s( tmp, _countof (tmp), "equal to" );
printf( " strcmp: String 1 is %s string 2\n", tmp );
// Case insensitive (could use equivalent _stricmp)
result = _stricmp( string1, string2 );
if( result > 0 )
strcpy_s( tmp, _countof (tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, _countof (tmp), "less than" );
else
strcpy_s( tmp, _countof (tmp), "equal to" );
printf( " _stricmp: String 1 is %s string 2\n", tmp );
}
Compare strings:
The quick brown dog jumps over the lazy fox
The QUICK brown dog jumps over the lazy fox
strcmp: String 1 is greater than string 2
_stricmp: String 1 is equal to string 2
Vea también
Manipulación de cadenas
memcmp
, wmemcmp
_memicmp
, _memicmp_l
Funciones strcoll
_stricmp
, _wcsicmp
, _mbsicmp
, _stricmp_l
, , _wcsicmp_l
, _mbsicmp_l
strncmp
, wcsncmp
, , _mbsncmp
, _mbsncmp_l
_strnicmp
, _wcsnicmp
, _mbsnicmp
, _strnicmp_l
, , _wcsnicmp_l
, _mbsnicmp_l
strrchr
, wcsrchr
, , _mbsrchr
, _mbsrchr_l
strspn
, wcsspn
, , _mbsspn
, _mbsspn_l
strxfrm
, wcsxfrm
, , _strxfrm_l
, _wcsxfrm_l