_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
Realiza una comparación minúscula de cadenas.
Importante |
---|
_mbsicmp y _mbsicmp_l no se pueden utilizar en las aplicaciones que se ejecutan en tiempo de ejecución de Windows.Para obtener más información, vea Funciones CRT no compatibles con /ZW. |
int _stricmp(
const char *string1,
const char *string2
);
int _wcsicmp(
const wchar_t *string1,
const wchar_t *string2
);
int _mbsicmp(
const unsigned char *string1,
const unsigned char *string2
);
int _stricmp_l(
const char *string1,
const char *string2,
_locale_t locale
);
int _wcsicmp_l(
const wchar_t *string1,
const wchar_t *string2,
_locale_t locale
);
int _mbsicmp_l(
const unsigned char *string1,
const unsigned char *string2,
_locale_t locale
);
Parámetros
string1, string2
Cadenas terminadas en null a comparar.locale
Configuración regional a utilizar.
Valor devuelto
El valor devuelto indica la relación de string1 a string2 como sigue.
Valor devuelto |
Descripción |
---|---|
< 0 |
string1 menos que string2 |
0 |
string1 idéntico a string2 |
> 0 |
string1 mayor que string2 |
En un error, _mbsicmp devuelve _NLSCMPERROR, que se define en STRING.H y MBSTRING.H.
Comentarios
La función de _stricmp lexicográficamente compara versiones minúsculas de string1 y de string2 y devuelve un valor que indica la relación._stricmp diferencia de _stricoll en que la comparación de _stricmp se ve afectada por LC_CTYPE, mientras que la comparación de _stricoll es como las categorías de LC_CTYPE y de LC_COLLATE de la configuración regional.Para obtener más información sobre la categoría de LC_COLLATE, vea setlocale y Categorías de configuración regional.Las versiones de estas funciones sin el sufijo de _l utilizan la configuración regional actual para el comportamiento configuración regional-dependiente.Las versiones con el sufijo son idénticas salvo que utilizan la configuración regional pasado en su lugar.Para obtener más información, vea Configuración regional.
[!NOTA]
_stricmp es equivalente a _strcmpi.Se pueden utilizar también pero _stricmp es el estándar preferida.
La función de _strcmpi es equivalente a _stricmp y se proporciona para la compatibilidad con versiones anteriores de.
Dado que stricmp realiza comparaciones minúsculas, puede producir un comportamiento inesperado.
Para mostrar cuando la conversión de caso por stricmp afecta al resultado de una comparación, supongamos que tiene las dos cadenas JOHNSTON y JOHN_HENRY.La cadena JOHN_HENRY se considera menos que JOHNSTON porque “_” tiene un valor ASCII menor que s minúscula.De hecho, cualquier carácter que tiene un valor ASCII entre 91 y 96 se consideran menos que cualquier letra.
Si la función de strcmp se utiliza en lugar de stricmp, JOHN_HENRY será mayor que JOHNSTON.
_wcsicmp y _mbsicmp son versiones de caracteres anchos y de multibyte- carácter de _stricmp.Los argumentos y el valor devuelto de _wcsicmp son cadenas de caracteres; las de _mbsicmp son cadenas de multibyte- carácter._mbsicmp 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). Estas tres funciones se comportan exactamente igual de otra manera.
_wcsicmp y wcscmp se comportan exactamente igual excepto que wcscmp no convierte los argumentos a minúsculas antes de compararlos._mbsicmp y _mbscmp se comportan exactamente igual excepto que _mbscmp no convierte los argumentos a minúsculas antes de compararlos.
Deberá llamar a setlocale para que _wcsicmp ejecute los caracteres latinos 1.La configuración regional de C está activada de forma predeterminada, de modo que, por ejemplo, el ä no comparará el igual a Ä.Llame a setlocale con cualquier configuración regional distinta de la configuración regional de C antes de la llamada a _wcsicmp.El ejemplo siguiente muestra cómo _wcsicmp es sensible a la configuración regional:
// crt_stricmp_locale.c
#include <string.h>
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_ALL,"C"); // in effect by default
printf("\n%d",_wcsicmp(L"ä", L"Ä")); // compare fails
setlocale(LC_ALL,"");
printf("\n%d",_wcsicmp(L"ä", L"Ä")); // compare succeeds
}
Una alternativa es llamar _create_locale, _wcreate_locale y pasar el objeto devuelto de la configuración regional como parámetro a _wcsicmp_l.
Todas estas funciones validan sus parámetros.Si string1 o string2 es punteros de NULL, se 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, estas funciones _NLSCMPERROR return y errno determinado a EINVAL.
Asignaciones de la rutina de Genérico- texto
Rutina de TCHAR.H |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcsicmp |
_stricmp |
_mbsicmp |
_wcsicmp |
Requisitos
Rutina |
Encabezado necesario |
---|---|
_stricmp, _stricmp_l |
<string.h> |
_wcsicmp, _wcsicmp_l |
<string.h> o <wchar.h> |
_mbsicmp, _mbsicmp_l |
<mbstring.h> |
Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.
Ejemplo
// crt_stricmp.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
Vea también
Referencia
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l