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