Problemi con la lettura di un file

di il
6 risposte

Problemi con la lettura di un file

Salve,
ho il problema che non mi legge come desidero le linee di un file;
la porzione di codice è la seguente:

struct Articolo {
    char codice[4];
    char nome[30];
    char tipo;
    float prezzo;
    int num_prodotti;
};

/* ... */

int i = 0;
while(fscanf(fp, "%s %s %c %f %d", codice, nome, &tipo, &prezzo, &num_prodotti)>0) {
        strcpy(articoli[i].codice, codice);
        strcpy(articoli[i].nome, nome);
        articoli[i].tipo = tipo;
        articoli[i].prezzo = prezzo;
        articoli[i].num_prodotti = num_prodotti;
        i++;
}
il file da cui vado a leggere contiene:

S000 ScarpeCalcio S 150.0 4
S001 PalloneBasket S 55.5 2
S004 MazzaBaseball S 250.0 6
...
e se eseguo un output di prova, mi restituisce questo:

(S000ScarpeCalcio, ScarpeCalcio, S, 150.000000, 4)
(S001PalloneBasket, PalloneBasket, S, 55.500000, 2)
(S004MazzaBaseball, MazzaBaseball, S, 250.000000, 6)
ho provato una stupidaggine, con "memcpy" per prendere solo i primi 4 caratteri del primo campo, ma non funge...

Sospetto che l'errore sia nel "fscanf" ma non saprei come risolvere.
Ho provato in vari modi, ma non cambia nulla.
Qualcuno saprebbe dirmi cosa sto sbagliando?

PS: il codice deve essere specificatamente in C (no C++).

6 Risposte

Devi accedere o registrarti per scrivere nel forum
6 risposte