Condividi tramite


strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

Esegue il confronto del numero specificato di caratteri delle due stringhe.

Importante

_mbsncmp e _mbsncmp_l non possono essere usati nelle applicazioni eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).

Sintassi

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
);

Parametri

string1, string2
Stringhe da confrontare.

count
Numero di caratteri da confrontare.

locale
Impostazioni locali da usare.

Valore restituito

Il valore restituito indica la relazione delle sottostringhe di string1 e string2 come descritto di seguito.

Valore restituito Descrizione
< 0 La sottostringa di string1 è minore della sottostringa di string2
0 La sottostringa di string1 è identica alla sottostringa di string2
> 0 La sottostringa di string1 è maggiore della sottostringa di string2

In caso di errore _mbsncmp di convalida dei parametri e _mbsncmp_l restituisce _NLSCMPERROR, definito in <string.h> e <mbstring.h>.

Osservazioni:

La funzione strncmp esegue un confronto ordinale al massimo dei primi count caratteri in string1 e string2, quindi restituisce un valore che indica la relazione tra le sottostringhe. strncmp è una versione di _strnicmp che effettua la distinzione tra maiuscole e minuscole. wcsncmp e _mbsncmp sono versioni con distinzione tra maiuscole e minuscole di _wcsnicmp e _mbsnicmp.

wcsncmp e _mbsncmp sono versioni con caratteri wide e caratteri multibyte di strncmp. Gli argomenti di sono stringhe di wcsncmp caratteri wide. Gli argomenti di sono stringhe di _mbsncmp caratteri multibyte. _mbsncmp riconosce le sequenze di caratteri multibyte in base alla tabella codici multibyte corrente e restituisce _NLSCMPERROR in caso di errore.

Inoltre, _mbsncmp e _mbsncmp_l convalidano i parametri. Se string1 o string2 è un puntatore Null e count non è uguale a 0, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, _mbsncmp e _mbsncmp_l restituiscono _NLSCMPERROR e impostano errno su EINVAL. strncmp e wcsncmp non convalidare i relativi parametri. A parte ciò, queste funzioni si comportano in modo identico.

Il comportamento di confronto di _mbsncmp e _mbsncmp_l è interessato dall'impostazione della categoria LC_CTYPE delle impostazioni locali. Controlla il rilevamento dei byte iniziali e finali dei caratteri multibyte. Per ulteriori informazioni, vedere setlocale. La funzione _mbsncmp usa le impostazioni locali correnti per questo comportamento dipendente dalle impostazioni locali. La funzione _mbsncmp_l è identica ad eccezione del fatto che usa il parametro locale. Per altre informazioni, vedere Locale. Se le impostazioni locali sono a un byte, il comportamento di queste funzioni è identico a strncmp.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Mapping di routine di testo generico

TCHAR.H Routine _UNICODE e _MBCS non definito _MBCS Definito _UNICODE Definito
_tcsnccmp strncmp _mbsncmp wcsncmp
_tcsncmp strncmp _mbsnbcmp wcsncmp
_tccmp Mapping a una macro o a una funzione inline _mbsncmp Mapping a una macro o a una funzione inline

Requisiti

Ciclo Intestazione obbligatoria
strncmp <string.h>
wcsncmp <string.h> oppure <wchar.h>
_mbsncmp, _mbsncmp_l <mbstring.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

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

Vedi anche

Manipolazione delle stringhe
impostazioni locali
Interpretazione di sequenze di caratteri multibyte
_mbsnbcmp, _mbsnbcmp_l
_mbsnbicmp, _mbsnbicmp_l
strcmp, wcscmp, _mbscmp
Funzioni strcoll
_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