ho tentato di svolgerlo cosi... non so quanto sia giusto..
#include<stdio.h>
struct articolo{
int codice;
char descrizione[100];
char fornitori[5][50];
int peso;
int quantita;
int quantita_min;
int quantita_max;
};
FILE *fp;
int aggiorna(int codice, char operazione, int quantita)
{
struct articolo artic={"0","","","0","0","0","0"}; /* inizializzo a zero la struct */
if((fp=fopen("magazzino.dat","r+"))==NULL)
{
printf("Non apribile");
}
else
{
fseek(fp,(codice-1)*sizeof(struct articolo),SEEK_SET);
fread(&artic, sizeof(struct articolo),1, fp);
if(operazione=='V')
{
if(quantita>artic.quantita)
{
return(-1);
}
else
{
articolo -=quantita;
fwrite(&artic, sizeof(struct articolo),1,fp);
}
}
else
{
if(operazione=='A')
{
artic.quantita += quantita;
fwrite(&artic, sizeof(struct articolo),1,fp);
}
else
{
return(-2);
}
}
if(artic.quantita<artic.quantita_min)
{
riordino(codice);
}
else
{
if(artic.quantita>artic.quantita_max)
{
esubero(codice)
}
}
return(quantita);
fclose(fp);
}
}