04/12/08 23:00
munkaka
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
non ho verificato se funziona, fammi sapere
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
ifstream leggi ("testo.txt"); char linea[255],ver[30]; int j,k; while(!leggi.eof()) { leggi.getline(linea,255); for(j=0;linea[j]!=' ';j++)//inserisco i caratteri finche non incontro lo spazio prima dell = ver[j]=linea[j]; if(!strcmp(ver,nome))//strcmp confronta le stringhe e restiruisce 0 se sono uguali { for(k=j+3;linea[k];k++)//mostro il resto della riga cout<<linea[k]; } }
non ho verificato se funziona, fammi sapere
aaa
05/12/08 14:25
John
Qui c'è un metodo a mio parere più elegante e utile xk salva tutto quello che legge in variabili...
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....
edit: attento che non puoi salvare nomi o valori con spazi!!! cioè devi fare: "nome_elemento = valore_elemento;".
#include<stdlib.h> #include<iostream.h> int main() { //dichiaro il file come un puntatore FILE *data; char letta[255],nome_el[255], valore_el[255]; //apro il file data = fopen("esempio.txt", "r"); while !(eof(data)) { //leggo una riga di 255 caratteri al max dal file "data" e la salvo nella variabile "letta" fgets(letta, 255, data); //esamino la riga e mi salvo nome e numero corrispondente sscanf(letta, "%s = %s;\n",&nome_el,&valore_el); if (strcmp(letta,"quello_che_devo_cercare")==0) {cout<<"Stringa trovata! il valore corrispondente è: "<<valore_el; fclose(data); system("pause>nul"); return 0;} } cout<<"query non trovata.... :("; fclose(data); system("pause>nul"); return 0; };
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....
edit: attento che non puoi salvare nomi o valori con spazi!!! cioè devi fare: "nome_elemento = valore_elemento;".
Ultima modifica effettuata da John 05/12/08 14:29
aaa