PDA

Visualizza la versione completa : [C] Lettura valori da una stringa


labrosan
08-03-2007, 02:20
Ciao a tutti.

for (i=0;i<mat1.row;i++)
{ fgets(riga,MAX,f1);
for (j=0;j<mat1.col;j++)
sscanf(riga,"%lf",&mat1.data[i][j]);
}

Questa porzione di codice legge una riga alla volta dal file f1.
Questa riga contiene dei valori numerici (il file contiene una matrice). Con la sscanf dovrei leggere e immagazzinare questi valori. Il problema č che mi legge sempre lo stesso valore, il primo della riga. In pratica la sscanf parte sempre all'inizio della riga. Come faccio a leggere anche gli altri valori. Non posso usare un'istruzione cosė:
sscanf(riga,"%lf %lf %lf ...);
perchč non so a priori quanti sono gli elementi della riga.

Grazie

andbin
08-03-2007, 10:13
Originariamente inviato da labrosan
Non posso usare un'istruzione cosė:
sscanf(riga,"%lf %lf %lf ...);
perchč non so a priori quanti sono gli elementi della riga.strtok() per "spezzare" la riga in pių token delimitati da spazi e poi, a tua scelta, sscanf() con %lf o atof() sui singoli token.

labrosan
10-03-2007, 02:18
Grazie per il suggerimento. Ho risolto in questo modo.

for (i=0;i<row;i++)
{ fgets(riga,MAX,f1);
j=0;
token = strtok(riga," "); // leggo all'interno della riga i valori della matrice
while (token != NULL) //strtok separa gli elementi di riga
{
data[i][j]=atof(token); //converto il token in double
j++;
token = strtok(NULL," ");
}

Loading