Compartir a través de


strcmp, wcscmp, _mbscmp

Compara cadenas.

Importante

_mbscmp no se puede 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 con /ZW.

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 
);

Parámetros

  • string1, string2
    Cadenas terminadas en NULL que se van a comparar.

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 y string2

< 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 devuelve _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. Para obtener más información, consulta Páginas de códigos. Además, si string1 o string2 son 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 devuelve _NLSCMPERROR y establece errno en EINVAL. strcmp y wcscmp no validan sus parámetros. Estas tres funciones se comportan exactamente igual.

Asignaciones de rutina de texto genérico

Rutina TCHAR.H

_UNICODE y _MBCS no definidos

_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 categoría LC_COLLATE, 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 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 “Z” y “a” en la tabla ASCII (“[”, “\”, “]”', “^”, “_” y “`”) se comparan de forma distinta, dependiendo de si son mayúsculas o minúsculas. Por ejemplo, las dos cadenas "ABCDE" y "ABCD^" se comparan de un modo si la comparación es minúscula ("abcde" > "abcd^") y del otro ("ABCDE" < "ABCD^") si la comparación es mayúscula.

Requisitos

Rutina

Encabezado necesario

strcmp

<string.h>

wcscmp

<string.h> o <wchar.h>

_mbscmp

<mbstring.h>

Para obtener información adicional de compatibilidad, vea 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 );
}
  

Equivalente en .NET Framework

System::String::CompareOrdinal

Vea también

Referencia

Manipulación de cadenas (CRT)

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