Exportar (0) Imprimir
Expandir todo
and
div
eof
not
or
xor
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Realiza una comparación de minúsculas entre cadenas.

Nota importante Importante

_mbsicmp y _mbsicmp_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 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
);

string1, string2

Cadenas terminadas en NULL que se van a comparar.

locale

Configuración regional que se va a usar.

El valor devuelto indica la relación entre string1 y string2 como se indica a continuación.

Valor devuelto

Descripción

< 0

string1 es menor que string2

0

string1 es idéntica a string2

> 0

string1 es mayor que string2

Si se produce un error, _mbsicmp devuelve _NLSCMPERROR, que se define en STRING.H y MBSTRING.H.

La función _stricmp compara lexicográficamente las versiones en minúsculas de string1 y string2, y devuelve un valor que indica su relación. _stricmp se diferencia de _stricoll en que la comparación de _stricmp se ve afectada por LC_CTYPE, mientras que la comparación de _stricoll se realiza en función de las categorías LC_CTYPE y LC_COLLATE de la configuración regional. Para obtener más información sobre la categoría LC_COLLATE , vea setlocale y Categorías de configuración regional. Las versiones de estas funciones sin el sufijo _l utilizan la configuración regional actual para el comportamiento que depende de la configuración regional. Las versiones con el sufijo son idénticas, salvo que usan el parámetro de configuración regional que se pasa. Para obtener más información, vea Configuración regional.

Nota Nota

_stricmp es equivalente a _strcmpi. Se pueden indistintamente, pero _stricmp es el estándar preferido.

La función _strcmpi es equivalente a _stricmp y se proporciona por razones de compatibilidad con versiones anteriores.

Dado que stricmp realiza comparaciones de minúsculas, podría producir un comportamiento inesperado.

Para ilustrar en qué casos la conversión de mayúsculas y minúsculas por parte de stricmp afecta al resultado de una comparación, supongamos que se tienen las cadenas JOHNSTON y JOHN_HENRY. La cadena JOHN_HENRY se considera menor que JOHNSTON porque “_” tiene un valor ASCII menor que una S minúscula. De hecho, cualquier carácter que tenga un valor ASCII entre 91 y 96 se considera menor que cualquier letra.

Si se usa la función strcmp en lugar de stricmp, JOHN_HENRY será mayor que JOHNSTON.

_wcsicmp y _mbsicmp son versiones de caracteres anchos y multibyte de _stricmp. Los argumentos y el valor devuelto de _wcsicmp son cadenas de caracteres anchos; los de _mbsicmp son cadenas de caracteres multibyte. _mbsicmp 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, vea Páginas de códigos.) Estas tres funciones se comportan exactamente igual.

_wcsicmp y wcscmp se comportan exactamente igual, salvo que wcscmp no convierte los argumentos en minúsculas antes de compararlos. _mbsicmp y _mbscmp se comportan exactamente igual, salvo que _mbscmp no convierte los argumentos en minúsculas antes de compararlos.

Debe llamar a setlocale para que _wcsicmp funcione con los caracteres de Latino 1. La configuración regional de C está activada de forma predeterminada, de modo que, por ejemplo, ä no se considera igual a Ä. Llame a setlocale con cualquier configuración regional distinta de la configuración regional de C antes de llamar a _wcsicmp. En el ejemplo siguiente se muestra cómo la configuración regional afecta a _wcsicmp :

// 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 a _create_locale, _wcreate_locale y pasar el objeto de configuración regional devuelto a _wcsicmp_l como parámetro.

Todas estas funciones validan sus parámetros. Si string1 o string2 es un puntero NULL, se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones devuelven _NLSCMPERROR y establecen errno en EINVAL.

Asignaciones de rutina de texto genérico

Rutina TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_tcsicmp

_stricmp

_mbsicmp

_wcsicmp

Rutina

Encabezado necesario

_stricmp , _stricmp_l

<string.h>

_wcsicmp , _wcsicmp_l

<string.h> o <wchar.h>

_mbsicmp , _mbsicmp_l

<mbstring.h>

Para obtener más información sobre compatibilidad, vea Compatibilidad.

// 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 );
}
Cadenas de la comparación:
   The quick brown dog jumps over the lazy fox
   The QUICK brown dog jumps over the lazy fox

   strcmp:   La cadena 1 es mayor que la cadena 2
   _stricmp:  La cadena 1 es igual a la cadena 2

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft