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.

Value 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 routine de texte générique

TCHAR.H Routine _UNICODE et _MBCS non défini _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 (« » < «ABCDEABCD ^ ») 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îne
memcmp, wmemcmp
_memicmp, _memicmp_l
strcoll, fonctions
_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
strspn, wcsspn, _mbsspn, _mbsspn_l
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l