Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Lettura file txt riga per riga
Forum - C/C++ - Lettura file txt riga per riga

Avatar
petzyou (Normal User)
Newbie


Messaggi: 1
Iscritto: 04/12/2008

Segnala al moderatore
Postato alle 11:11
Giovedì, 04/12/2008
Salve a tutti, avrei bisogno di una mano se possibile.

Io ho un file .txt di questo tipo per esempio:

A = 10;
pippo = 34;
nome = TOPOLINO;
...

in cui compaiono delle variabili (A, pippo, nome) e dei valori (10, 34, "TOPOLINO").
A me serve creare una funzione di lettura automatica in cui immettendo come parametro di input una variabile o più variabili mi restituisca in video il valore o i valori associati alla variabile.

Grazie 1000 ragazzi

PM Quote
Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 0:00
Venerdì, 05/12/2008
inserisci in nome variabile in char array
char nome[30];
cin.getline(nome,30);
poi leggi il file di testo riga per riga e inserisci i nomi delle variabili in un'altro char array, e poi prima di passare alla prossima riga controlla se i nomi sono uguali, se sono uguali butti fuori il resto della riga
Codice sorgente - presumibilmente C/C++

  1. ifstream leggi ("testo.txt");
  2. char linea[255],ver[30];
  3. int j,k;
  4. while(!leggi.eof())
  5. {
  6. leggi.getline(linea,255);
  7. for(j=0;linea[j]!=' ';j++)//inserisco i caratteri finche non incontro lo spazio prima dell =
  8.    ver[j]=linea[j];
  9. if(!strcmp(ver,nome))//strcmp confronta le stringhe e restiruisce 0 se sono uguali
  10. {
  11.   for(k=j+3;linea[k];k++)//mostro il resto della riga
  12.      cout<<linea[k];
  13. }
  14. }


non ho verificato se funziona, fammi sapere


Q: I need help, give me some pointers!
R: 0x3A28213A, 0x6339392C, 0x7363684E, ...
PM Quote
Avatar
John (Ex-Member)
Pro


Messaggi: 191
Iscritto: 18/11/2007

Segnala al moderatore
Postato alle 15:25
Venerdì, 05/12/2008
Qui c'è un metodo a mio parere più elegante e utile xk salva tutto quello che legge in variabili...

Codice sorgente - presumibilmente Delphi

  1. #include<stdlib.h>
  2.  
  3. #include<iostream.h>
  4.  
  5. int main()
  6. {
  7.  
  8. //dichiaro il file come un puntatore
  9. FILE *data;
  10. char letta[255],nome_el[255], valore_el[255];
  11. //apro il file
  12. data = fopen("esempio.txt", "r");
  13.  
  14. while !(eof(data))
  15. {
  16. //leggo una riga di 255 caratteri al max dal file "data" e la salvo nella variabile "letta"
  17. fgets(letta, 255, data);
  18.  
  19. //esamino la riga e mi salvo nome e numero corrispondente
  20. sscanf(letta, "%s = %s;\n",&nome_el,&valore_el);  
  21. if (strcmp(letta,"quello_che_devo_cercare")==0) {cout<<"Stringa trovata! il valore corrispondente è: "<<valore_el;
  22. fclose(data);
  23. system("pause>nul");
  24. return 0;}
  25. }
  26. cout<<"query non trovata.... :(";
  27. fclose(data);
  28. system("pause>nul");
  29. return 0;
  30. };



Mi scuso se c'è qualche errore... sono di fretta ed è da un po' che non programmo in c.... il mio dubbio principale è sulla condizione del while, il resto mi sembra a posto....:k:

edit: attento che non puoi salvare nomi o valori con spazi!!! cioè devi fare: "nome_elemento = valore_elemento;".

Ultima modifica effettuata da John il 05/12/2008 alle 15:29


Costruisci come se dovesse durare 1000 anni, vivi come se fosse l'ultimo giorno....

Linux user #510634
PM Quote