strcmp, wcscmp, _mbscmp, _mbscmp_l

Compara 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 a string1string2
< 0 string1 es menor que string2.
0 string1 es idéntica a string2.
> 0 string1 es mayor que string2.

En un error de validación de parámetros, _mbscmp y devuelven _NLSCMPERROR, que se define en <string.h> y <mbstring.h>_mbscmp_l .

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 al 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 validan 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 cambiarlo, vea Estado global en CRT.

Asignaciones de rutina de texto genérico

TCHAR.H Rutina _UNICODE&_MBCS no definido _MBCS Definido _UNICODE Definido
_tcscmp strcmp _mbscmp wcscmp

Las funciones strcmp se diferencian de las funciones strcoll en que las comparaciones de strcmp 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 obtener más información sobre la LC_COLLATE categoría , vea 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 determinadas configuraciones regionales europeas, el carácter 'a' (valor 0x61) va delante del carácter 'ä' (valor 0xE4) en el juego de caracteres, pero el carácter 'ä' se encuentra delante del 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 contienen caracteres que se encuentran entre "Z" y "a" en la tabla ASCII ('[', '\\', ']', '^', '_' y '`') se comparan de forma diferente, en función de su caso. Por ejemplo, las dos cadenas "ABCDE" y "ABCD^" comparan una manera si la comparación está en minúsculas ("abcde" > "abcd^")ABCDE y la otra ("" < "ABCD^") si la comparación está en mayúsculas.

Requisitos

Rutina Encabezado necesario
strcmp <string.h>
wcscmp <string.h> o <wchar.h>
_mbscmp <mbstring.h>

Para obtener información adicional 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
strcoll Funciones
_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