Partager via


_stricmp, , _wcsicmp, _stricmp_l_mbsicmp, , _wcsicmp_l_mbsicmp_l

Effectue une comparaison de chaînes sans tenir compte de la casse.

Important

_mbsicmp et _mbsicmp_l ne peuvent pas être utilisées dans les applications qui s'exécutent dans Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.

Syntaxe

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 Null à comparer.

locale
Paramètres régionaux à utiliser.

Valeur retournée

La valeur de retour indique la relation de string1 avec string2 comme suit.

Valeur retournée Description
< 0 string1 inférieure à 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 _stricmp fonction compare string1 et string2 après la conversion de chaque caractère en minuscules et retourne une valeur indiquant leur relation. _stricmp diffère de _stricoll en cela que la comparaison de _stricmp est affectée seulement par LC_CTYPE, qui détermine quels caractères sont en majuscule et en minuscule. La fonction _stricoll compare des chaînes en fonction à la fois des catégories LC_CTYPE et LC_COLLATE des paramètres régionaux, ce qui comprend la casse et l'ordre de classement. Pour plus d’informations sur la LC_COLLATE catégorie, consultez setlocale et les catégories de paramètres régionaux. Les versions de ces fonctions sans le suffixe _l utilisent les paramètres régionaux actuels pour le comportement dépendant des paramètres régionaux. Les versions avec le suffixe sont identiques, sauf qu'elles utilisent à la place les paramètres régionaux passés en entrée. Si les paramètres régionaux n’ont pas été définis, les paramètres régionaux C sont utilisés. Pour plus d’informations, consultez Locale.

Remarque

_stricmp est équivalent à _strcmpi. Elles peuvent être utilisés indifféremment, mais _stricmp est la norme préférée.

La fonction _strcmpi est équivalente à _stricmp et elle est fournie seulement à des fins de compatibilité descendante.

Comme _stricmp effectue des comparaisons de minuscules, elle peut aboutir à un comportement inattendu.

Pour illustrer quand la conversion _stricmp de cas affecte le résultat d’une comparaison, supposons que vous avez les deux chaînes JOHNSTON et JOHN_HENRY. La chaîne JOHN_HENRY est considérée comme inférieure JOHNSTON au fait que le «_ » a une valeur ASCII inférieure à une valeur S minuscule. En fait, tout caractère ayant une valeur ASCII comprise entre 91 et 96 sera considéré comme inférieur à n’importe quelle lettre.

Si la strcmp fonction est utilisée au lieu de _stricmp, JOHN_HENRY sera supérieure à JOHNSTON.

_wcsicmp et _mbsicmp sont des versions à caractères larges et à caractères multioctets de _stricmp. Les arguments et la valeur de retour sont _wcsicmp des chaînes à caractères larges. Les arguments et la valeur de retour sont _mbsicmp des chaînes de caractères multioctets. _mbsicmp reconnaît les séquences de caractères multioctets selon la page de codes multioctets active et retourne _NLSCMPERROR en cas d'erreur. Pour plus d’informations, consultez Pages de codes. Ces trois fonctions se comportent sinon de façon identique.

_wcsicmp et wcscmp se comportent de la même façon, sauf qu’il wcscmp ne convertit pas ses arguments en minuscules avant de les comparer. _mbsicmp et _mbscmp se comportent de la même façon, sauf qu’il _mbscmp ne convertit pas ses arguments en minuscules avant de les comparer.

Vous devez appeler setlocale _wcsicmp pour travailler avec 1 caractères latins. Les paramètres régionaux C sont en vigueur par défaut. Par exemple, ä ne sera pas comparé à Ä. Appelez setlocale avec n'importe quels paramètres régionaux autres que les paramètres régionaux C avant d'appeler _wcsicmp. L'exemple suivant montre comment _wcsicmp est sensible aux paramètres régionaux :

// crt_stricmp_locale.c
By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md).

#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_localeet _wcreate_locale à transmettre l’objet de paramètres régionaux retourné en tant que paramètre à _wcsicmp_l.

Toutes ces fonctions valident leurs paramètres. string1 Si des pointeurs null ou string2 sont des pointeurs null, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent _NLSCMPERROR et définissent errno avec la valeur EINVAL.

Mappages de routines de texte générique

Routine TCHAR.H _UNICODE et _MBCS non définis _MBCS défini _UNICODE défini
_tcsicmp _stricmp _mbsicmp _wcsicmp

Spécifications

Routine En-tête requis
_stricmp, _stricmp_l <string.h>
_wcsicmp, _wcsicmp_l <string.h> ou <wchar.h>
_mbsicmp, _mbsicmp_l <mbstring.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

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 );
}
Compare strings:
   The quick brown dog jumps over the lazy fox
   The QUICK brown dog jumps over the lazy fox

   strcmp:   String 1 is greater than string 2
   _stricmp:  String 1 is equal to string 2

Voir aussi

Manipulation de chaînes
memcmp, wmemcmp
_memicmp, _memicmp_l
strcmp, , wcscmp_mbscmp
strcoll, fonctions
strncmp, , wcsncmp_mbsncmp, ,_mbsncmp_l
_strnicmp, , _wcsnicmp, _strnicmp_l_mbsnicmp, , _wcsnicmp_l_mbsnicmp_l
strrchr, , wcsrchr_mbsrchr, ,_mbsrchr_l
_strset, , _strset_l, _wcsset_l_wcsset, , _mbsset_mbsset_l
strspn, , wcsspn_mbsspn, ,_mbsspn_l