24/01/15 14:07
Sguaraus
Buongiorno,
ho un problema con la fread. Ho un file binario contenente vari prodotti di supermercato, devo:
- leggere quei prodotti
- inserirli in una lista dinamica e stamparli a video
- aggiungere altri prodotti e ristampare la lista
- rimuovere dei prodotti e ristampare la lista
- salvare la lista aggiornata su un file
il problema è che son fermo al punto 1. Il compilatore mi da errore nelle fread, ma non in tutte, solo quelle che vanno a leggere dei campi della struttura del prodotto di tipo float e int. Quelli di tipo char no.
Programma C
ho un problema con la fread. Ho un file binario contenente vari prodotti di supermercato, devo:
- leggere quei prodotti
- inserirli in una lista dinamica e stamparli a video
- aggiungere altri prodotti e ristampare la lista
- rimuovere dei prodotti e ristampare la lista
- salvare la lista aggiornata su un file
il problema è che son fermo al punto 1. Il compilatore mi da errore nelle fread, ma non in tutte, solo quelle che vanno a leggere dei campi della struttura del prodotto di tipo float e int. Quelli di tipo char no.
Programma C
#include <stdio.h> #include <string.h> #include <stddef.h> #include <stdlib.h> #define MAXS1 30 #define MAXS2 50 #define MAXS3 10 typedef struct { int codice; char nome[MAXS2]; char categoria[MAXS1]; char provenienza[MAXS1]; int scorta; float costo; } TPprodotto; typedef struct TPprodtemp{ char nome[MAXS2]; char categoria[MAXS1]; char provenienza[MAXS1]; int codice; int scorta; float costo; struct TPprodtemp *next; } TPprodmag; FILE *fp; TPprodotto *prodotto; TPprodmag *magazzino; void lettura(FILE *fp); int main(int argc, char *argv[]){ lettura(fp); fclose(fp); } void lettura(FILE *fp){ if((fp=fopen("magazzino.dat", "rb+"))==NULL){ printf(" Impossibile aprire il file"); exit; } //finchè non ho terminato il file continuo a leggere i prodotti fread(prodotto->codice, sizeof(int), 1,fp); fread(prodotto->nome, sizeof(char), 1,fp); fread(prodotto->categoria, sizeof(char), 1,fp); fread(prodotto->provenienza, sizeof(char), 1,fp); fread(prodotto->scorta, sizeof(int), 1,fp); fread(prodotto->costo, sizeof(float), 1,fp); printf("%d", prodotto->codice); printf("%s", prodotto->nome); printf("%s", prodotto->categoria); printf("%s", prodotto->provenienza); printf("%d", prodotto->scorta); printf("%f", prodotto->costo); }
Ultima modifica effettuata da Sguaraus 24/01/15 14:23
aaa