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 l'argomento relativo alle funzioni CRT non supportate con /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 
);

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 di convalida del parametro, _mbsncmp e _mbsncmp_l restituiscono _NLSCMPERROR, definito in <string.h> e <mbstring.h>.

Note

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 wcsncmp sono stringhe di caratteri wide, mentre gli argomenti di _mbsncmp sono stringhe di 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, 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 convalidano i 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 altre 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 Impostazioni locali. Se le impostazioni locali sono a un byte, il comportamento di queste funzioni è identico a strncmp.

Mapping di routine di testo generico

Routine TCHAR.H

_UNICODE e _MBCS non definiti

_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

non applicabile

non applicabile

_mbsncmp_l

non applicabile

Requisiti

Routine

Intestazione obbligatoria

strncmp

<string.h>

wcsncmp

<string.h> o <wchar.h>

_mbsncmp, _mbsncmp_l

<mbstring.h>

Per altre informazioni sulla compatibilità, vedere 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 );
}
  

Equivalente .NET Framework

System::String::Compare

Vedere anche

Riferimenti

Modifica di stringhe (CRT)

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