Partager via


_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Exécutez une comparaison en minuscules des chaînes.

Important

_mbsicmp et _mbsicmp_l ne peuvent pas être utilisés dans les applications qui s'exécutent dans les fenêtres d'exécution.Pour plus d'informations, consultez Fonctions CRT non prises en charge avec /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
);

Paramètres

  • string1, string2
    Chaîne terminée par le caractère NULL à comparer.

  • locale
    Paramètres régionaux à utiliser.

Valeur de retour

La valeur de retour indique la relation d' string1 à string2 comme suit.

Valeur de retour

Description

< 0

string1 moins qu' string2

0

string1 identique à string2

> 0

string1 supérieur string2

Sur une erreur, _mbsicmp retourne _NLSCMPERROR, qui est définie dans STRING.H et MBSTRING.H.

Notes

La fonction d' _stricmplexicographique compare les versions minuscule d' string1 et d' string2 et retourne une valeur indiquant leur relation._stricmpdiffère d' _stricollcar la comparaison d' _stricmpest affectée par LC_CTYPE, alors que la comparaison d' _stricollest en fonction de les catégories d' LC_CTYPEet d' LC_COLLATEdes paramètres régionaux.Pour plus d'informations sur la catégorie d' LC_COLLATE, consultez setlocale et l' Catégories de paramètres régionaux.Les versions de ces fonctions sans suffixe d' _l utilisent les paramètres régionaux définis pour un comportement dépendant des paramètres régionaux.Les versions avec le suffixe sont identiques sauf qu'elles utilisent les paramètres régionaux passés à la place.Pour plus d'informations, consultez Paramètres régionaux.

[!REMARQUE]

_stricmp équivaut à _strcmpi.Elles peuvent être utilisées l'un de l'autre mais _stricmp est la norme par défaut.

La fonction d' _strcmpiest équivalente à _stricmpet est fournie pour la compatibilité descendante uniquement.

Étant donné qu' stricmp effectue des comparaisons minuscules, il peut entraîner un comportement inattendu.

Pour illustrer lorsque la conversion en majuscules ou minuscules par stricmp affecte le résultat d'une comparaison, supposez que vous avez les deux chaînes JOHNSTON et JOHN_HENRY.La chaîne JOHN_HENRY sera considérée moins que JOHNSTON car « _ » a une valeur ASCII plus faible qu'une minuscule S.En fait, tout caractère qui a une valeur ASCII comprise entre 91 et 96 sont considérés comme moins que toute lettre.

Si la fonction d' strcmp est utilisée au lieu d' stricmp, JOHN_HENRY est supérieur à JOHNSTON.

_wcsicmp et _mbsicmp sont à caractères larges et des versions à caractères multioctets d' _stricmp.Les arguments et la valeur de retour d' _wcsicmp sont des chaînes à caractères larges ; ces d' _mbsicmp sont des chaînes de caractères multioctets._mbsicmp identifie les séquences de caractères multioctets d'après la page de codes multioctets en cours et retourne _NLSCMPERROR sur une erreur.(Pour plus d'informations, consultez l' Pages de codes.) Ces trois fonctions se comportent de sinon.

_wcsicmp et wcscmp se comportent de la différence qu' wcscmp ne convertit pas ses arguments en minuscules avant de les comparer._mbsicmp et _mbscmp se comportent de la différence qu' _mbscmp ne convertit pas ses arguments en minuscules avant de les comparer.

Vous devez appeler setlocale pour qu' _wcsicmp fonctionne avec les caractères latin de 1.Les paramètres régionaux C sont appliquées par défaut, donc, par exemple, l'ä ne comparera pas égale à Ä.Appelez setlocale avec les paramètres régionaux autres que les paramètres régionaux C avant l'appel à _wcsicmp.L'exemple suivant montre comment _wcsicmpest sensible aux paramètres régionaux :

// 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
}

Une alternative consiste à appeler _create_locale, _wcreate_locale et en passant l'objet de paramètres régionaux retourné comme paramètre à _wcsicmp_l.

Toutes ces fonctions valident leurs paramètres.Si string1 ou string2 sont des pointeurs d' NULL, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres .Si est autorisé à l'exécution pour continuer, ces fonctions _NLSCMPERROR de retour et affectez errno à EINVAL.

Mappages de routines de texte générique

Routine de TCHAR.H

_UNICODE et non définis _MBCS

_MBCS défini

_UNICODE défini

_tcsicmp

_stricmp

_mbsicmp

_wcsicmp

Configuration requise

Routine

En-tête requis

_stricmp, _stricmp_l

<string.h>

_wcsicmp, _wcsicmp_l

<string.h> ou <wchar.h>

_mbsicmp, _mbsicmp_l

<mbstring.h>

Pour des informations de compatibilité supplémentaires, consultez l' Compatibilité dans l'introduction.

Exemple

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

Équivalent .NET Framework

System::String::Compare

Voir aussi

Référence

Manipulation de chaînes (CRT)

memcmp, wmemcmp

_memicmp, _memicmp_l

strcmp, wcscmp, _mbscmp

fonctions de strcoll

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l