PDA

Visualizza la versione completa : [c] stringhe


vale_stella84
27-02-2007, 23:48
da tempo sto cercando di operare su stringhe ma con scarso risultato
sono riuscita per ora a fare un algoritmo che mi cerca una data parola su stringa ma non
riesco a stabilire quale delle parole che compongono la stringa sia la più grande cioè abbia più caratteri
per ricercare una parola su stringa faccio cosi:


testo[]="questo testo cerca una chiave e la parola più grande";
chiave[]="testo";
for(i=0; i<n; i++)
{
if( strncmp( &testo[i], chiave, m)==0 )
.....

cioè uso la function strncmp che mi restituisce 0 dove trova corrispondenza con la chiave
ora come faccio a cercare sulla stringa la parola di max dimensione??
vi sarei molto grata se mi postate un codice spigandomelo;

vi ringrazio in anticipo dell'aiuto :smack:

oregon
27-02-2007, 23:57
Scusa, ma con quel codice stai cercando la stringa contenuta in 'chiave' ... non la piu' lunga ... spiega meglio quello che vuoi fare e i dati a disposizione ...

vale_stella84
28-02-2007, 00:02
si con quella cerco una chiave e credo di essereci riuscita,ora l'esercizio che devo fare continua dicendo: data una stringa testo stabilire quali tra le parole che contiene sia la più grande cioè con più caratteri e quante vocali contenga

oregon
28-02-2007, 00:04
Allora non devi cercare nulla. Devi solamente dividere la frase in parole e vedere qual'e' la piu' lunga. Ogni parola e' separata dalle altre da uno spazio (o e' alla fine della frase).

Ti consiglio di studiare le funzioni strtok e strlen ...

vale_stella84
28-02-2007, 00:08
ecco appunto come faccio a dividere la stringa in parole separate?
io pensavo di inserire ad ogni fine parola il carattere di fine stringa '\0'
ma non riesco a farlo :confused:

oregon
28-02-2007, 00:12
Non devi dividere ... devi usare la strtok ...

vale_stella84
28-02-2007, 00:14
mi puoi spiegare come funziona?

oregon
28-02-2007, 00:17
Forse e' meglio vedere un esempio ... la spiegazione della strtok la puoi trovare ovunque in rete ...



char testo[] = "questo programma cerca una chiave e la parola più grande";
char delim[] = " ";
char *maxs, *res;

maxs = res = NULL;

res = strtok(testo, delim);
while(res)
{
if(maxs)
{
if(strlen(res)>strlen(maxs))
maxs=res;
}
else
maxs=res;

res = strtok(NULL, delim);
}

printf("La parola piu' lunga e' : %s\n", maxs);

vale_stella84
28-02-2007, 00:27
capito,grazie mille,buona notte :zizi:

Loading