2012-01-17 17 views
5

Ho difficoltà nell'individuare le informazioni sul confronto delle stringhe C. Capisco che a differenza del C++, C non supporta l'overloading dell'operatore, quindi mi chiedo se c'è un modo per verificare se una stringa è maggiore/minore di un'altra (ad esempio str1> str2)?Operatori di confronto per stringhe C

Grazie in anticipo per le vostre risposte. Questa è onestamente una delle prime volte in cui ho dovuto fare una domanda perché non sono riuscito a trovare un post correlato.

risposta

14

Ci sono diversi, ciascuno con diversi scopi (omettendo le varianti di carattere ampio per ora).

strcmp - confronta due stringhe, carattere per carattere (con la nozione C di quali stringhe sono uguali o meno - che non deve necessariamente coincidere con il modo in cui gli umani pensano - vedere strcoll). Esiste una variante per confrontare solo il primo al massimo n caratteri, strncmp.

strcasecmp - confronta due stringhe, ignorando la custodia. Esiste una variante per confrontare solo il primo al massimo n caratteri, strncasecmp.

strcoll - confronta due stringhe, osservando le impostazioni locali correntemente impostate (motivo per cui si chiama collation, non in questo caso in confronto). Se vuoi che ss e ß siano uguali per un pubblico tedesco, allora questo è quello che dovresti usare.


Dove è possibile scrivere

if (string1 > string2) ... 

in una lingua, è necessario scrivere

if (strmp(string1, string2) > 0) ... 

in C. In sostanza si sposta entrambi gli operandi nella chiamata di funzione, mantenere l'operatore di confronto e confrontare con 0 invece.

2

Usa strcmp() in C.

per esempio se si desidera confrontare due stringhe S1 e S2 poi,

strcmp (s1, s2) restituirà 0 se sono uguali, numero intero positivo se s1 è maggiore di s2 e numero intero negativo se s1 è minore di s2.