PDA

View Full Version : Confronto stringhe in c....like?


pmhwp
29-06-2007, 13:42
Ciao a tutti devo realizzare una ricerca in c per nome.

Questa ricerca pero' vorrei realizzarla del tipo che cercando ad esempio
rosso

vengano visualizzate le parole che gli assomigliano, ad esempio non so
rotto.

Ovvero vorrei che vengano pescate dalla lista contenuta ad esempio in un vettore anche le parole che gli assomigliano che magari iniziano allo stesso modo...
Un po come si fa in una query Sql con like e %%...
Si puo' fare? Esiste una funzione apposta?

Ciao.

andbin
29-06-2007, 14:00
Questa ricerca pero' vorrei realizzarla del tipo che cercando ad esempio
rosso

vengano visualizzate le parole che gli assomigliano, ad esempio non so
rotto.

Ovvero vorrei che vengano pescate dalla lista contenuta ad esempio in un vettore anche le parole che gli assomigliano che magari iniziano allo stesso modo...
Un po come si fa in una query Sql con like e %%...
Si puo' fare? Esiste una funzione apposta?Beh, dovresti essere un po' più preciso. Una cosa è comparare solo i primi N caratteri (è facile, usi strncmp invece di strcmp).
Un'altra cosa è poter usare dei caratteri "wildcard" come ad esempio in ro??o oppure r*o. E un'altra cosa ancora è usare algoritmi più complessi come il noto Soundex (http://en.wikipedia.org/wiki/Soundex).

pmhwp
29-06-2007, 14:10
Facendola semplice se volessi confrontare i primi tre caratteri?

Come la uso la strncmp?

Ciao.

andbin
29-06-2007, 14:15
Facendola semplice se volessi confrontare i primi tre caratteri?

Come la uso la strncmp?Esempio:
char *s1 = "pineta";
char *s2 = "pinna";
int r;

r = strncmp (s1, s2, 3);

pmhwp
29-06-2007, 15:08
Ho visto che strncmp è case sensitive....
Ne esiste una variante non case sensitive?

Grazie.

andbin
29-06-2007, 15:19
Ne esiste una variante non case sensitive?A livello di funzioni standard ANSI C, no non ci sono funzioni per fare la comparazione di stringhe in modo case insensitive ed eventualmente al max di n caratteri.
Ci possono però essere delle funzioni specifiche di un certo compilatore/ambiente. Dimmi il tuo compilatore e vediamo.

pmhwp
29-06-2007, 15:23
Io uso dev c++ però se può essere semplice potrebbe bastarmi una funzione che converte tutte le stringhe in maiuscolo...cosi' mi levo il problema inserendo tutto in maiuscolo...

Ciao e grazie di nuovo.

andbin
29-06-2007, 15:28
Io uso dev c++Prova ad usare: strnicmp

pmhwp
29-06-2007, 15:32
Grazie!
Sei un genio!
Ciao.