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