Nous recommandons d’utiliser Visual Studio 2017

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

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

System_CAPS_ICON_important.jpg 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 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.

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

Valeur de retourDescription
< 0sous-chaîne de string1 inférieure à sous-chaîne de string2
0sous-chaîne de string1 identique à sous-chaîne de string2
> 0sous-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>.

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ètre non valide 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 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.

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE et _MBCS non définis_MBCS défini_UNICODE défini
_tcsnccmpstrncmp_mbsncmpwcsncmp
_tcsncmpstrncmp_mbsnbcmpwcsncmp
_tccmpMappe à la macro ou à la fonction inline_mbsncmpMappe à la macro ou à la fonction inline
non applicablenon applicable_mbsncmp_lnon applicable
RoutineEn-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é.

// 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  

System::String::compare

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

Afficher: