_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_locale
et _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