strcmp
, , wcscmp
_mbscmp
, ,_mbscmp_l
Comparer des chaînes.
Important
_mbscmp
et _mbscmp_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 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
);
int _mbscmp_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 pour chacune de ces fonctions indique la relation ordinale de string1
avec string2
.
Valeur | Relation de string1 à string2 |
---|---|
< 0 | string1 est inférieur à string2 |
0 | string1 est identique à string2 |
> 0 | string1 est supérieur à string2 |
Sur une erreur de validation de paramètre, _mbscmp
puis retournez_NLSCMPERROR
, qui est définie dans <string.h>
et <mbstring.h>
_mbscmp_l
.
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. _mbscmp_l
a le même comportement, mais utilise le paramètre de paramètres régionaux passé au lieu des paramètres régionaux actuels. Pour plus d’informations, consultez Pages de codes. En outre, s’il string1
s’agit d’un string2
pointeur Null, _mbscmp
appelle le gestionnaire de paramètres non valide, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à continuer, _mbscmp
et _mbscmp_l
retournent _NLSCMPERROR
et définissent errno
à EINVAL
. strcmp
et wcscmp
ne valident pas leurs paramètres. Ces fonctions se comportent sinon de façon identique.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
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 strcmp
fonctions diffèrent des strcoll
fonctions dans ces strcmp
comparaisons 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 LC_COLLATE
catégorie, 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 0x61) précède le caractère 'ä
' (valeur 0xE4) dans le jeu de caractères, mais le caractère 'ä
' est devant le caractère 'a
' lexicographiquement.
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 qui contiennent des caractères situés entre « Z » et « a » dans la table ASCII ('[
, '', '\\
]
', '', '^
_
' et ''`
) comparent différemment, en fonction de leur cas. Par exemple, les deux chaînes «ABCDE
» et «ABCD^
» comparent une façon si la comparaison est en minuscules («abcde
» >abcd^
») et l’autre façon (« » < «ABCDE
ABCD
^ ») si la comparaison est en majuscules.
Spécifications
Routine | En-tête requis |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> ou <wchar.h> |
_mbscmp |
<mbstring.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
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 );
}
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
strcoll
, fonctions
_stricmp
, , _wcsicmp
, _stricmp_l
_mbsicmp
, , _wcsicmp_l
_mbsicmp_l
strncmp
, , wcsncmp
_mbsncmp
, ,_mbsncmp_l
_strnicmp
, , _wcsnicmp
, _strnicmp_l
_mbsnicmp
, , _wcsnicmp_l
_mbsnicmp_l
strrchr
, , wcsrchr
_mbsrchr
, ,_mbsrchr_l
strspn
, , wcsspn
_mbsspn
, ,_mbsspn_l
strxfrm
, , wcsxfrm
_strxfrm_l
, ,_wcsxfrm_l