strcmp, wcscmp, _mbscmp, _mbscmp_l

Confrontare stringhe.

Importante

_mbscmp e _mbscmp_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 strcmp(
   const char *string1,
   const char *string2
);
int wcscmp(
   const wchar_t *string1,
   const wchar_t *string2
);
int _mbscmp(
   const unsigned char *string1,
   const unsigned char *string2
);
int _mbscmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   _locale_t locale
);

Parametri

string1, string2
Stringhe che terminano con Null da confrontare.

locale
Impostazioni locali da usare.

Valore restituito

Il valore restituito per ognuna di queste funzioni indica la relazione ordinale di string1 e string2.

Valore Relazione tra string1 a string2
< 0 string1 è minore di string2
0 string1 è identica a string2
> 0 string1 è maggiore di string2

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

Osservazioni:

La funzione strcmp esegue un confronto ordinale di string1 e string2, quindi restituisce un valore che ne indica la relazione. wcscmp e _mbscmp sono versioni, rispettivamente, con caratteri wide e caratteri multibyte di strcmp. _mbscmp riconosce le sequenze di caratteri multibyte in base alla tabella codici multibyte corrente e restituisce _NLSCMPERROR in caso di errore. _mbscmp_l ha lo stesso comportamento, ma usa il parametro delle impostazioni locali passato anziché le impostazioni locali correnti. Per altre informazioni, vedere Tabelle codici. Inoltre, se string1 o string2 è un puntatore Null, _mbscmp richiama il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, _mbscmp e _mbscmp_l restituiscono _NLSCMPERROR e impostano errno su EINVAL. strcmp e wcscmp non convalidare i relativi parametri. A parte ciò, queste funzioni si comportano in modo identico.

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
_tcscmp strcmp _mbscmp wcscmp

Le strcmp funzioni differiscono dalle strcoll funzioni in quanto strcmp i confronti sono ordinali e non sono interessate dalle impostazioni locali. strcoll confronta le stringhe a livello lessicografico usando la categoria LC_COLLATE delle impostazioni locali correnti. Per altre informazioni sulla LC_COLLATE categoria, vedere setlocale, _wsetlocale.

Nelle impostazioni locali "C", l'ordine dei caratteri nel set di caratteri (set di caratteri ASCII) è lo stesso dell'ordine lessicografico dei caratteri. Tuttavia, in altre impostazioni locali, l'ordine dei caratteri nel set di caratteri può differire dall'ordine lessicografico. Ad esempio, in determinate impostazioni locali europee, il carattere 'a' (valore 0x61) precede il carattere 'ä' (valore 0xE4) nel set di caratteri, ma il carattere 'ä' si trova davanti al carattere 'a' lessicograficamente.

Nelle impostazioni locali in cui il set di caratteri e l'ordine dei caratteri a livello lessicografico è diverso è possibile usare strcoll al posto di strcmp per il confronto lessicografico delle stringhe. In alternativa, è possibile usare strxfrm nelle stringhe originali e strcmp nelle stringhe risultanti.

Le funzioni strcmp prevedono la distinzione tra maiuscole e minuscole. _stricmp, _wcsicmp e _mbsicmp confrontano le stringhe convertendole prima nel formato minuscolo. Due stringhe che contengono caratteri che si trovano tra 'Z' e 'a' nella tabella ASCII ('[', '', '\\', ']', '^', '_' e '`') vengono confrontate in modo diverso, a seconda del caso. Ad esempio, le due stringhe "ABCDE" e "ABCD^" confrontano un modo se il confronto è minuscolo ("abcde" "abcd^") > e l'altro ("ABCDE" < "ABCD^") se il confronto è maiuscolo.

Requisiti

Ciclo Intestazione obbligatoria
strcmp <string.h>
wcscmp <string.h> oppure <wchar.h>
_mbscmp <mbstring.h>

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

Librerie

Tutte le versioni delle librerie di runtime C.

Esempio

// crt_strcmp.c

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";

int main( void )
{
   char tmp[20];
   int result;

   // Case sensitive
   printf( "Compare strings:\n   %s\n   %s\n\n", string1, string2 );
   result = strcmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof (tmp), "less than" );
   else
      strcpy_s( tmp, _countof (tmp), "equal to" );
   printf( "   strcmp:   String 1 is %s string 2\n", tmp );

   // Case insensitive (could use equivalent _stricmp)
   result = _stricmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof (tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof (tmp), "less than" );
   else
      strcpy_s( tmp, _countof (tmp), "equal to" );
   printf( "   _stricmp:  String 1 is %s string 2\n", tmp );
}
Compare strings:
   The quick brown dog jumps over the lazy fox
   The QUICK brown dog jumps over the lazy fox

   strcmp:   String 1 is greater than string 2
   _stricmp:  String 1 is equal to string 2

Vedi anche

Manipolazione delle stringhe
memcmp, wmemcmp
_memicmp, _memicmp_l
Funzioni strcoll
_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l
strspn, wcsspn, _mbsspn, _mbsspn_l
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l