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

Consulte 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