Partager via


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

Manipulation de chaînes (CRT)

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