Partager via


strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

Compare jusqu'au nombre spécifié de caractères de deux chaînes.

Important

_mbsncmp et _mbsncmp_l ne peuvent pas être utilisées dans les applications qui s'exécutent dans Windows Runtime.Pour plus d'informations, voir Fonctions CRT non prises en charge avec /ZW.

int strncmp(
   const char *string1,
   const char *string2,
   size_t count 
);
int wcsncmp(
   const wchar_t *string1,
   const wchar_t *string2,
   size_t count 
);
int _mbsncmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count 
);
int _mbsncmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count, 
   _locale_t locale
);int _mbsnbcmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count 
);

Paramètres

  • string1, string2
    Chaînes à comparer.

  • count
    Nombre de caractères à comparer.

  • locale
    Paramètres régionaux à utiliser.

Valeur de retour

La valeur de retour indique la relation des sous-chaînes de string1 et de string2 comme suit.

Valeur de retour

Description

< 0

sous-chaîne de string1 inférieure à sous-chaîne de string2

0

sous-chaîne de string1 identique à sous-chaîne de string2

> 0

sous-chaîne de string1 supérieure à sous-chaîne de string2

En cas d'erreur de validation d'un paramètre, _mbsncmp et _mbsncmp_l retournent _NLSCMPERROR, qui est défini dans <string.h> et dans <mbstring.h>.

Notes

La fonction strncmp effectue une comparaison ordinale d'au moins les count caractères de string1 et de string2, et retourne une valeur qui indique la relation entre les sous-chaînes. strncmp est une version respectant la casse de _strnicmp. wcsncmp et _mbsncmp sont des versions respectant la casse de _wcsnicmp et de _mbsnicmp.

wcsncmp et _mbsncmp sont des versions à caractères larges et à caractères multioctets de strncmp. Les arguments de wcsncmp sont des chaînes de caractères larges ; ceux de _mbsncmp sont des chaînes de caractères multioctets. _mbsncmp reconnaît les séquences de caractères multioctets selon une page de codes multioctets et retourne _NLSCMPERROR en cas d'erreur.

De plus, _mbsncmp et _mbsncmp_l vérifient les paramètres. Si string1 ou string2 est un pointeur null, le gestionnaire de paramètres non valides est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à continuer, _mbsncmp et _mbsncmp_l retournent _NLSCMPERROR et définissent errno à EINVAL. strncmp et wcsncmp ne vérifient pas leurs paramètres. Ces fonctions se comportent sinon de façon identique.

Le comportement de la comparaison de _mbsncmp et de _mbsncmp_l est affecté par la valeur du paramètre de catégorie LC_CTYPE des paramètres régionaux. Ce paramètre contrôle la détection des octets de début et de fin des caractères multioctets. Pour plus d'informations, consultez setlocale. La fonction _mbsncmp utilise les paramètres régionaux actuels pour ce comportement dépendant des paramètres régionaux. La fonction _mbsncmp_l est identique, sauf qu'elle utilise à la place le paramètre locale. Pour plus d'informations, consultez Paramètres régionaux. Si les paramètres régionaux sont des paramètres régionaux sur un seul octet, le comportement de ces fonctions est identique à celui de strncmp.

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE et _MBCS non définis

_MBCS défini

_UNICODE défini

_tcsnccmp

strncmp

_mbsncmp

wcsncmp

_tcsncmp

strncmp

_mbsnbcmp

wcsncmp

_tccmp

Mappe à la macro ou à la fonction inline

_mbsncmp

Mappe à la macro ou à la fonction inline

non applicable

non applicable

_mbsncmp_l

non applicable

Configuration requise

Routine

En-tête requis

strncmp

<string.h>

wcsncmp

<string.h> ou <wchar.h>

_mbsncmp, _mbsncmp_l

<mbstring.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité.

Exemple

// crt_strncmp.c
#include <string.h>
#include <stdio.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";

int main( void )
{
   char tmp[20];
   int result;
   printf( "Compare strings:\n      %s\n      %s\n\n",
           string1, string2 );
   printf( "Function:   strncmp (first 10 characters only)\n" );
   result = strncmp( string1, string2 , 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n\n", tmp );
   printf( "Function:   strnicmp _strnicmp (first 10 characters only)\n" );
   result = _strnicmp( string1, string2, 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n", tmp );
}
  

Équivalent .NET Framework

System::String::Compare

Voir aussi

Référence

Manipulation de chaînes (CRT)

Paramètres régionaux

Interprétation des séquences de caractères multioctets

_mbsnbcmp, _mbsnbcmp_l

_mbsnbicmp, _mbsnbicmp_l

strcmp, wcscmp, _mbscmp

strcoll, fonctions

_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l