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 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 |
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î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
, _strnicmp_l
_mbsnicmp
, , _wcsnicmp_l
_mbsnicmp_l
strrchr
, , wcsrchr
_mbsrchr
, ,_mbsrchr_l
_strset
, , _strset_l
, _wcsset_l
_wcsset
, , _mbsset
_mbsset_l
strspn
, , wcsspn
_mbsspn
, ,_mbsspn_l