strcmp, wcscmp, _mbscmp
Comparar las cadenas.
Importante |
---|
_mbscmp no se puede utilizar en las aplicaciones que se ejecutan en Windows en tiempo de ejecución.Para obtener más información, vea Funciones CRT no compatibles 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 a comparar.
Valor devuelto
El valor devuelto para cada una de estas funciones indica la relación lexicográfica de string1 a string2.
Valor |
Relación de string1 y string2 |
---|---|
< 0 |
string1 es menor que string2 |
0 |
string1 es idéntico a string2 |
> 0 |
string1 es mayor que string2 |
En un error, _mbscmp devuelve _NLSCMPERROR, que se define en STRING.H y MBSTRING.H.
Comentarios
La función de strcmp compara string1 y string2 lexicográficamente y devuelve un valor que indica la relación.wcscmp y _mbscmp son versiones, respectivamente, de carácter ancho y de multibyte- carácter de strcmp._mbscmp reconoce secuencias de multibyte- carácter según la página de códigos actual multibyte y devuelve _NLSCMPERROR en un error.Para obtener más información, vea Páginas de códigos.Además, si string1 o string2 es un puntero NULL, _mbscmp invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, _mbscmp devuelve _NLSCMPERROR y establece errno a EINVAL.strcmp y wcscmp no validan sus parámetros.Estas tres funciones se comportan exactamente igual de otra manera.
Asignaciones de la rutina de Genérico- texto
Rutina de TCHAR.H |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
Las funciones de strcmp difieren de las funciones de strcoll en que las comparaciones de strcmp no afecta a la configuración regional, mientras que la manera de las comparaciones de strcoll viene determinada por la categoría de LC_COLLATE de la configuración regional actual.Para obtener más información sobre la categoría de 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 el orden lexicográfico de caracteres.Sin embargo, en configuraciones regionales, el orden de los caracteres del juego de caracteres puede diferir de la orden lexicográfica.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 configuraciones regionales para las que el juego de caracteres y el orden lexicográfico de caracteres difieren, utilice strcoll en lugar de strcmp para la comparación lexicográfica de cadenas como el valor de categoría de LC_COLLATE de la configuración regional actual.Para realizar una comparación lexicográfica de la configuración regional en el ejemplo anterior, utilice strcoll en lugar de strcmp.Alternativamente, puede utilizar strxfrm en cadenas originales, utiliza strcmp en las cadenas resultantes.
_stricmp, _wcsicmp, y _mbsicmp comparan cadenas primero convirtiendolas a los formularios en minúsculas.Dos cadenas que contienen caracteres que se encuentran entre la “z” y “a” en la tabla ASCII (“[”, '\', “]”, '^', '_', y '`') se comparan de manera diferente, dependiendo del caso.Por ejemplo, las dos cadenas "ABCDE" y "ABCD^" comparan una manera si la comparación es minúscula ("abcde" > "abcd^") y otra manera ("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 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
_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