Share 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, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.

Syntaxe

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 retournée

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

Valeur retournée 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

Sur une erreur de validation de paramètre, _mbsncmp puis retournez_NLSCMPERROR, qui est définie dans <string.h> et <mbstring.h>_mbsncmp_l .

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 ces chaînes sont des chaînes à caractères larges. Les arguments de _mbsncmp ce 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 et count n’est pas égal à 0, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à continuer, _mbsncmp et _mbsncmp_l retournent _NLSCMPERROR et définissent errno à EINVAL. strncmp et wcsncmp ne valident 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 Locale. 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.

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
_tcsnccmp strncmp _mbsncmp wcsncmp
_tcsncmp strncmp _mbsnbcmp wcsncmp
_tccmp Mappe à la macro ou à la fonction inline _mbsncmp Mappe à la macro ou à la fonction inline

Spécifications

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é, consultez Compatibility.

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 );
}
Compare strings:
      The quick brown dog jumps over the lazy fox
      The QUICK brown fox jumps over the lazy dog

Function:   strncmp (first 10 characters only)
Result:      String 1 is greater than string 2

Function:   strnicmp _strnicmp (first 10 characters only)
Result:      String 1 is equal to string 2

Voir aussi

Manipulation de chaîne
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