strcmp, wcscmp, _mbscmp
Comparez des chaînes.
Important
_mbscmp ne peut pas être utilisé dans les applications qui s'exécutent dans Windows Runtime.Pour plus d'informations, consultez Fonctions CRT non prises en charge avec /ZW.
int strcmp(
const char *string1,
const char *string2
);
int wcscmp(
const wchar_t *string1,
const wchar_t *string2
);
int _mbscmp(
const unsigned char *string1,
const unsigned char *string2
);
Paramètres
- string1, string2
Chaîne terminée par le caractère NULL à comparer.
Valeur de retour
La valeur de retour pour chacune de ces fonctions indique la relation lexicographique d' string1 à string2.
Valeur |
Relation de string1 à chaîne2 |
---|---|
< 0 |
string1 est moins qu' string2 |
0 |
string1 identique à string2 |
> 0 |
string1 est supérieur à string2. |
Sur une erreur, _mbscmp retourne _NLSCMPERROR, qui est définie dans STRING.H et MBSTRING.H.
Notes
La fonction d' strcmp compare string1 et string2 lexicographique et retourne une valeur qui indique la relation.wcscmp et _mbscmp sont, respectivement, à caractères larges et des versions à caractères multioctets d' strcmp._mbscmp 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 Pages de codes.En outre, si string1 ou string2 est un pointeur null, _mbscmp appelle le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution pour continuer, _mbscmp retourne _NLSCMPERROR et définit errno à EINVAL.strcmp et wcscmp ne valident pas leurs paramètres.Ces trois fonctions se comportent de sinon.
Mappages de routines de texte générique
Routine de TCHAR.H |
_UNICODE et non définis _MBCS |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
Les fonctions d' strcmp diffèrent des fonctions d' strcoll du effectue des comparaisons d' strcmp ne sont pas affectées par les paramètres régionaux, alors que la manière de les comparaisons d' strcoll est déterminée par la catégorie d' LC_COLLATE des paramètres régionaux.Pour plus d'informations sur la catégorie d' LC_COLLATE, consultez setlocale, _wsetlocale.
Dans les paramètres régionaux « C », l'ordre des caractères dans le jeu de caractères (jeu de caractères ASCII) est le même que l'ordre des caractères lexicographiques.Toutefois, dans d'autres paramètres régionaux, l'ordre des caractères dans le jeu de caractères peut différer de la commande lexicographique.Par exemple, dans certains paramètres régionaux européens, le caractère « a » (valeur 0x61) précède le caractère « ä » (valeur 0xE4) dans le jeu de caractères, mais le caractère « ä » précède le caractère « a » lexicographique.
Dans les paramètres régionaux pour lesquels le jeu de caractères et l'ordre des caractères lexicographiques diffèrent, utilisez strcoll plutôt qu' strcmp pour la comparaison lexicographique des chaînes en fonction de la configuration de catégorie d' LC_COLLATE des paramètres régionaux.Pour effectuer une comparaison lexicographique des paramètres régionaux dans l'exemple ci-dessus, utilisez strcoll plutôt qu' strcmp.Sinon, vous pouvez utiliser strxfrm sur les chaînes d'origine, puis utilisez strcmp sur les chaînes résultantes.
_stricmp, _wcsicmp, et _mbsicmp comparer des chaînes en convertissant d'abord à leurs formes casse.Deux chaînes qui contiennent des caractères situés entre « Z » et « a » dans le tableau ASCII (" [ », '\', « ] », '^', '_', et '`') sont considérés différemment, selon le cas.Par exemple, les deux chaînes "ABCDE" et "ABCD^" comparent une méthode si la comparaison est en minuscules ("abcde" > "abcd^") et l'autre manière ("ABCDE" < "ABCD^") si la comparaison est en majuscules.
Configuration requise
Routine |
En-tête requis |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> ou <wchar.h> |
_mbscmp |
<mbstring.h> |
Pour des informations de compatibilité supplémentaires, consultez Compatibilité.
Bibliothèques
Toutes les versions d' Bibliothèques runtime C.
Exemple
// crt_strcmp.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::CompareOrdinal
Voir aussi
Référence
_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l