---++ Confronto tra stringhe Per confrontare due stringhe, facciamo una funzione la quale gli passeremo come argomenti due stringhe da confronatare. Essa come risposta alla nostra chiamata, ci restituirà: "-1" se la seconda stringa è minore della prima, "1" il contrario (prima > seconda), 0 se le due stringhe sono uguali. Le due stringhe vengono confrontate *lessicograficamente*, ovvero vengono confrontate un carattere per volta a partire dal primo. Due stringhe *x* ed *y* che iniziano con la stessa successione di *n* caratteri ma differiscono nel carattere *n---+1 esimo* sono: * *x < y* se il carattere *n---+1 esimo* di *x* ha valore (codice ASCII) minore del corrispondente carattere in *y* * *x > y* se il carattere è *maggiore* del corripondente * *x = y* se hanno la stessa lunghezza e sono identiche Esempio: * %RED%'abcdef' < 'abcghi'%FINE% ('d' < 'g') * %RED%'abcdef' > 'abcc'%FINE% ('d' > 'c') * %RED%'abcd' > 'abcceuoqiueo'%FINE% ('d' > 'c') <PRE style="background: lightgrey;"> <verbatim> /* mystrcmp */ int mystrcmp(char *prima, char *seconda) { int i = 0; /* si ferma al primo carattere diverso tra le due stringhe * oppure, quando è giunto alla fine di una delle due stringhe */ while((prima[i] == seconda[i]) && (prima[i] != '\0') && seconda != '\0') i---++; /* ora vado a confrontare i due caratteri che differiscono */ /* NOTA: il carattere terminatore delle tringhe cioè '\0' vale "0", * perciò è minore di tutti i caratteri! */ /* se il carattere della prima stringa è maggiore della seconda */ if(prima[i] > seconda[i]) return 1; /* prima > seconda */ /* se il carattere della prima stringa è minore della seconda */ if(prima[i] < seconda[i]) return -1; /* prima < seconda */ /* naturalmente se i caratteri non differiscono sono uguali. */ /* Se arrivo qua, significa che le stringhe sono uguali e come * se andassi a confrontare i due caratteri terminatori, che * sono uguali. */ return 0; /* prima = seconda */ } </verbatim> </pre> -- Users.MarcoEsposito - 19 Nov 2002
This topic: Programmazione1/AA0506/PZ
>
WebHome
>
AppuntiEsercitazioni2002
>
ConfrontoTraStringhe
Topic revision: r4 - 2003-10-04 - AndreaSterbini
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback