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.