strcmp, wcscmp, _mbscmp
Comparer des chaînes.
Important
_mbscmp ne peut pas être utilisée dans les applications qui s'exécutent dans Windows Runtime.Pour plus d'informations, voir Fonctions CRT non prises en charge avec /ZW (éventuellement en anglais).
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 Null à comparer.
Valeur de retour
La valeur de retour pour chacune de ces fonctions indique la relation ordinale de string1 avec string2.
Valeur |
Relation de chaîne1 à chaîne2 |
---|---|
< 0 |
string1 est inférieure à string2 |
0 |
string1 est identique à string2 |
> 0 |
string1 est supérieure à string2 |
En cas d'erreur de validation d'un paramètre, _mbscmp retourne _NLSCMPERROR, qui est défini dans <string.h> et dans <mbstring.h>.
Notes
La fonction strcmp effectue une comparaison ordinale de string1 et de string2, et retourne une valeur qui indique leur relation. wcscmp et _mbscmp sont respectivement des versions à caractères larges et à caractères multioctets de strcmp. _mbscmp 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. En outre, si string1 ou string2 est un pointeur null, _mbscmp appelle le gestionnaire de paramètres non valides, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à continuer, _mbscmp retourne _NLSCMPERROR et définit errno à EINVAL. strcmp et wcscmp ne vérifient pas leurs paramètres. Ces trois fonctions se comportent sinon de façon identique.
Mappages de routines de texte générique
Routine TCHAR.H |
_UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
Les fonctions strcmp diffèrent des fonctions strcoll en ceci que les comparaisons strcmp sont ordinales et ne sont pas affectées par les paramètres régionaux. strcoll compare les chaînes d'un point de vue lexicographique en utilisant la catégorie LC_COLLATE des paramètres régionaux actuels. Pour plus d'informations sur la catégorie LC_COLLATE, consultez setlocale, _wsetlocale.
Dans les paramètres régionaux "C", l'ordre des caractères du jeu de caractères (jeu de caractères ASCII) est le même que l'ordre lexicographique des caractères. Cependant, dans d'autres paramètres régionaux, l'ordre des caractères du jeu de caractères peut différer de l'ordre lexicographique. Par exemple, dans certains paramètres régionaux européens, le caractère « a » (valeur 0 x 61) se trouve avant le caractère « ä » (valeur 0xE4) dans le jeu de caractères, mais le caractère « ä » se trouve avant le caractère « a » d'un point de vue lexicographique.
Dans les paramètres régionaux pour lesquels le jeu de caractères et l'ordre lexicographique des caractères diffèrent, vous pouvez utiliser strcoll au lieu de strcmp pour la comparaison lexicographique de chaînes. Vous pouvez aussi utiliser strxfrm sur les chaînes d'origine, puis utiliser strcmp sur les chaînes résultantes.
Les fonctions strcmp respectent la casse. _stricmp, _wcsicmp et _mbsicmp comparent les chaînes en les convertissant d'abord en minuscules. Deux chaînes contenant des caractères qui se trouvent entre « Z » et « a » dans la table ASCII (« [ », « \ », « ] », « ^ », « _ » et « ` ») se comparent différemment, en fonction de leur casse. Par exemple, les deux chaînes "ABCDE" et "ABCD^" se comparent d'un certaine façon si la comparaison est en minuscules ("abcde" > "abcd^") et d'une autre façon ("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 plus d'informations sur la compatibilité, voir Compatibilité.
Bibliothèques
Toutes les versions des 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