Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - isolare stringhe file di testo
Forum - C/C++ - isolare stringhe file di testo

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Dark_Limit (Ex-Member)
Expert


Messaggi: 220
Iscritto: 15/01/2008

Segnala al moderatore
Postato alle 15:53
Venerdì, 25/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
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 19:02
Venerdì, 25/01/2008
Ovviamente sì ... apri il file, leggi parola dopo parola finche' non trovi la tua ...

PM Quote
Avatar
Dark_Limit (Ex-Member)
Expert


Messaggi: 220
Iscritto: 15/01/2008

Segnala al moderatore
Postato alle 19:06
Venerdì, 25/01/2008
Mi potresti dire gentilmente la funzione che legge parola dopo parola?

PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 19:15
Venerdì, 25/01/2008
ciao cosi dovrebbe funzionare:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6. char txt[1024]={"0,0"};
  7. char parole[255][255]={"0,0"};
  8. FILE *fp;
  9. int i, n, m;
  10. fp = fopen("percorso\\del\\file","r");
  11.  
  12. for(i=0; ((txt[i]=getc(fp)) != EOF);i++)
  13.         ;
  14.  
  15. for (int y=0, n=0, m=0; y!=i;y++,m++)
  16. {
  17.         if (txt[y]==' ')
  18.         {
  19.                 n++;
  20.                 m=-1;
  21.         }
  22.         else
  23.         {
  24.                 parole[n][m]=txt[y];
  25.         }
  26. }
  27.  
  28.  
  29. }



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
PM Quote
Avatar
Dark_Limit (Ex-Member)
Expert


Messaggi: 220
Iscritto: 15/01/2008

Segnala al moderatore
Postato alle 19:25
Venerdì, 25/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 ?

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 19:46
Venerdì, 25/01/2008
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++

  1. int main()
  2. {
  3.   char parolacercata[200] = "parola";
  4.   char parola[200];
  5.   FILE *fp;
  6.  
  7.   fp = fopen("file.txt","r");
  8.  
  9.   while(1)
  10.   {
  11.     if(fscanf(fp, "%s", parola)==EOF) break;
  12.        
  13.     if(strcmp(parola, parolacercata)==0)
  14.     {
  15.       printf("Parola trovata\n");
  16.       break;
  17.     }
  18.   }
  19.  
  20.   fclose(fp);
  21. }


Ultima modifica effettuata da gantonio il 25/01/2008 alle 19:46
PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 19:51
Venerdì, 25/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++

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6.  
  7. char txt[1024]={"0,0"};
  8. char parole[255][255]={"0,0"};
  9. FILE *fp;
  10.  
  11. int i, n, m;
  12.  
  13. fp = fopen("C:\\prova.txt","r");
  14.  
  15. for(i=0; ((txt[i]=getc(fp)) != EOF);i++)
  16.         ;
  17.  
  18. n =0;
  19. m=0;
  20. for (int y=0, n=0, m=0; y!=i;y++,m++)
  21. {
  22.         if (txt[y]==' ')
  23.         {
  24.                 n++;
  25.                 m=-1;
  26.         }
  27.         else
  28.         {
  29.                 parole[n][m]=txt[y];
  30.         }
  31. }
  32.  
  33. //questo codice che ti sto scrivendo ora verifica se la parola ciao è presente
  34. for (int v=0; v<n;v++)
  35. {
  36. if (strcmp("ciao",parole[v])==0)
  37. {
  38.         //parola trovata
  39. }
  40. }
  41. }



ciao

PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 19:53
Venerdì, 25/01/2008
Testo quotato

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++

  1. int main()
  2. {
  3.   char parolacercata[200] = "parola";
  4.   char parola[200];
  5.   FILE *fp;
  6.  
  7.   fp = fopen("file.txt","r");
  8.  
  9.   while(1)
  10.   {
  11.     if(fscanf(fp, "%s", parola)==EOF) break;
  12.        
  13.     if(strcmp(parola, parolacercata)==0)
  14.     {
  15.       printf("Parola trovata\n");
  16.       break;
  17.     }
  18.   }
  19.  
  20.   fclose(fp);
  21. }



:k: questo codice è di granlunga migliore del mio.

PM Quote
Avatar
Dark_Limit (Ex-Member)
Expert


Messaggi: 220
Iscritto: 15/01/2008

Segnala al moderatore
Postato alle 19:56
Venerdì, 25/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!!

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo