Condividi tramite


strcmp, wcscmp, _mbscmp

Confrontare le stringhe.

Importante

_mbscmp non può essere usato nelle applicazioni eseguite in Windows Runtime.Per altre informazioni, vedere l'argomento relativo alle funzioni CRT non supportate con /ZW.

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

Parametri

  • string1, string2
    Stringhe che terminano con Null da confrontare.

Valore restituito

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

Valore

Relazione di stringa1 e stringa2

< 0

string1 è minore di string2

0

string1 è identica a string2

> 0

string1 è maggiore di string2

In caso di errore di convalida del parametro, _mbscmp restituisce _NLSCMPERROR, definito in <string.h> e <mbstring.h>.

Note

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. Per altre informazioni, vedere Tabelle codici. Inoltre, se string1 o string2 è un puntatore null, _mbscmp richiama il gestore di parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, _mbscmp restituisce _NLSCMPERROR e imposta errno su EINVAL. strcmp e wcscmp non convalidano i parametri. A parte ciò, queste tre funzioni si comportano in modo identico.

Mapping di routine di testo generico

Routine TCHAR.H

_UNICODE e _MBCS non definiti

_MBCS definito

_UNICODE definito

_tcscmp

strcmp

_mbscmp

wcscmp

Le funzioni strcmp sono diverse dalle funzioni strcoll perché i confronti strcmp sono ordinali e non sono interessati dalle impostazioni locali. strcoll confronta le stringhe a livello lessicografico usando la categoria LC_COLLATE delle impostazioni locali correnti. Per altre informazioni sulla categoria LC_COLLATE, 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 alcune impostazioni locali europee, il carattere 'a' (valore 0x61) precede il carattere 'ä' (valore 0xE4) nel set di caratteri, ma il carattere 'ä' precede a livello lessicografico il carattere 'a'.

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 '`') eseguono diversamente il confronto, a seconda del tipo di carattere maiuscolo/minuscolo. Ad esempio, le due stringhe "ABCDE" e "ABCD^" vengono confrontate in un modo se il confronto è in minuscolo ("abcde" > "abcd^") e in un altro ("ABCDE" < "ABCD^") se è in maiuscolo.

Requisiti

Routine

Intestazione obbligatoria

strcmp

<string.h>

wcscmp

<string.h> o <wchar.h>

_mbscmp

<mbstring.h>

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

Equivalente .NET Framework

System::String::CompareOrdinal

Vedere anche

Riferimenti

Modifica di stringhe (CRT)

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