Oppure

Loading
04/12/08 10:11
petzyou
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
aaa
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
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...

#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))
&#65371;
//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) &#65371;cout<<"Stringa trovata! il valore corrispondente è: "<<valore_el; 
fclose(data); 
system("pause>nul"); 
return 0;&#65373;
&#65373;
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....:k:

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