Tra le altre cose...
==========
fread(prodotto->codice, sizeof(int), 1,fp);
Così facendo, da come la vedo, pare che tu non stia fornendo un puntatore al campo "codice" della tua struttura, bensì stia fornendo il *valore numerico* di quel campo, il che significa che fread() va a scrivere chissà dove i dati letti.
Lo stesso qui:
fread(prodotto->scorta, sizeof(int), 1,fp);
==========
fread(prodotto->costo, sizeof(float), 1,fp);
Anche qui pare che tu non stia fornendo un puntatore al campo "costo" della tua struttura, bensì stia fornendo il *valore numerico* di quel campo. In più, il compilatore si lamenta perché riceve quello che dovrebbe essere un puntatore, ma lo riceve in un formato per lui "strano" nel contesto, ovvero un tipo float.
==========
fread(prodotto->nome, sizeof(char), 1, fp);
In quest'altro caso, invece, a me pare che tu stia leggendo solo il primo carattere della stringa che intendi leggere.
Lo stesso qui:
fread(prodotto->categoria, sizeof(char), 1, fp);
fread(prodotto->provenienza, sizeof(char), 1, fp);
==========
P.S. Se ho scritto delle stupidaggini qualcuno mi corregga, per favore.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti. |