Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569

    C - Lettura valori da una stringa

    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

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: C - Lettura valori da una stringa

    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.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569
    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," ");
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.