Dark_Limit (Ex-Member)
Expert
Messaggi: 220
Iscritto: 15/01/2008
|
Ciao a tutti! Avrei un problema..dovrei cercare in un file di testo una parola sottolineo parola(quindi non una frase)..mi spiego meglio : mettiamo che nel mio file di testo ci sia scritto questo "ciao come stai?" quello che mi chiedo è posso ricevere solo la parola "stai" ?
Grazie anticipatamente !
Ultima modifica effettuata da Dark_Limit il 25/01/2008 alle 15:55 |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Ovviamente sì ... apri il file, leggi parola dopo parola finche' non trovi la tua ...
|
|
Dark_Limit (Ex-Member)
Expert
Messaggi: 220
Iscritto: 15/01/2008
|
Mi potresti dire gentilmente la funzione che legge parola dopo parola?
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
ciao cosi dovrebbe funzionare:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <string.h> int main() { char txt[1024]={"0,0"}; char parole[255][255]={"0,0"}; FILE *fp; int i, n, m; fp = fopen("percorso\\del\\file","r"); for(i=0; ((txt[i]=getc(fp)) != EOF);i++) ; for (int y=0, n=0, m=0; y!=i;y++,m++) { if (txt[y]==' ') { n++; m=-1; } else { parole[n][m]=txt[y]; } } }
|
questo codice legge un file e salva tutte le lettere in un array, poi successivamente salva in una matrice le parole. Ora devi semplicemente verificare se c'è tra gli elementi della matrice la parola che ti interessa.
ciao.
... nel caso non sapessi confontare due stringhe puoi usare la funzione strcmp(str1,str2).
Ultima modifica effettuata da Overflow il 25/01/2008 alle 19:22 |
|
Dark_Limit (Ex-Member)
Expert
Messaggi: 220
Iscritto: 15/01/2008
|
ciao..intanto grazie mille per il codice postato!!
volevo dirti una cosa..quando inserisco tra gli apici la parola da cercare(correggimi se sbaglio) -->if (txt[y]==' ') non me la trova (ho messo una messagebox per verificarlo) cosa posso fare ?
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Non e' necessario memorizzare il file e cercare in memoria ... secondo le specifiche, basta cercare la parola mentre si legge il file
Codice sorgente - presumibilmente C/C++ |
int main()
{
char parolacercata[200] = "parola";
char parola[200];
FILE *fp;
fp = fopen("file.txt","r");
while(1)
{
if(fscanf(fp, "%s", parola)==EOF) break;
if(strcmp(parola, parolacercata)==0)
{
printf("Parola trovata\n");
break;
}
}
fclose(fp);
}
|
Ultima modifica effettuata da gantonio il 25/01/2008 alle 19:46 |
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
prima t ho dato il codice per metà, cioè ti ho dato un codice che ti permette di salvare le parole del file in una matrice.
Comunque per verificare se c'è la parola che vuoi tu basta fare cosi:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <string.h> int main() { char txt[1024]={"0,0"}; char parole[255][255]={"0,0"}; FILE *fp; int i, n, m; fp = fopen("C:\\prova.txt","r"); for(i=0; ((txt[i]=getc(fp)) != EOF);i++) ; n =0; m=0; for (int y=0, n=0, m=0; y!=i;y++,m++) { if (txt[y]==' ') { n++; m=-1; } else { parole[n][m]=txt[y]; } } //questo codice che ti sto scrivendo ora verifica se la parola ciao è presente for (int v=0; v<n;v++) { if (strcmp("ciao",parole[v])==0) { //parola trovata } } }
|
ciao
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
Postato originariamente da gantonio:
Non e' necessario memorizzare il file e cercare in memoria ... secondo le specifiche, basta cercare la parola mentre si legge il file
Codice sorgente - presumibilmente C/C++ |
int main()
{
char parolacercata[200] = "parola";
char parola[200];
FILE *fp;
fp = fopen("file.txt","r");
while(1)
{
if(fscanf(fp, "%s", parola)==EOF) break;
if(strcmp(parola, parolacercata)==0)
{
printf("Parola trovata\n");
break;
}
}
fclose(fp);
}
|
|
questo codice è di granlunga migliore del mio. |
|
Dark_Limit (Ex-Member)
Expert
Messaggi: 220
Iscritto: 15/01/2008
|
Grazie a tutti e due..funziona in entrambi i modi...vi ringrazio e se avete bisogno chiedetemi pure all'indirizzo email nel mio profilo..ciao e grazie ancora!!
|
|