Ciao ragazzi sono nuovo prima discussione, qualcuno può aiutarmi.. Ho un problema nel case due non riesco ad aggiornare le voci presenti nel file di testo. Grazie in anticipo
Ecco il codice
codice:
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
typedef struct Articolo {
int codice;
char nome[300];
int quantita;
} ARTICOLO;
int g=0;
int j=0;
int i=0;
int var=0;
int qprovv=0;
int ID = 0, quantit =0;
char NomeArticolo [50];
int main (void)
{
ARTICOLO Articolo[100];
FILE *fd;
char c;
char NomeArticolo[50];
int q, ID;
float p, prezzo1, prezzo2;
do
{
printf("1-Inserisci Articolo\n");
printf("2-Modifica Quantita'\n");
printf("3- Visualizza magazzino\n");
printf("4- Visualizza riga per riga\n");
printf("0-Fine\n");
g=0;
c=getchar();
getchar();
switch (c)
{
case '1':
printf("Inserisci codice Articolo: ");
scanf("%d", &ID);
i=0;
/* apre il file */
if ((fd = fopen("magazzino.txt", "r+")) != NULL)
{ while(EOF!=fscanf(fd, "%d %s %d\n", &Articolo[i].codice, &Articolo[i].nome, &Articolo[i].quantita))
i++;
}
else (printf("ERRORE NELL'APERTURA DEL FILE"));
/* verifica se l'oggetto è presente */
for (j=0; j<i; j++)
{
if(ID == Articolo[j].codice)
{
printf( "Prodotto gia' presente.\n\n");
g = 1;
}
}
/* inserisce un nuovo oggetto */
if(g== 0)
{
printf("\nInserisci nome Articolo: ");
scanf("%s", &NomeArticolo);
printf("\nInserisci quantita: ");
scanf("%d", &quantit);
fprintf(fd, "\n%d %s %d ",ID, NomeArticolo, quantit );
printf("Il prodotto e' stato inserito nel database.\n");
}
fclose(fd);
g=0;
j=0;
break;
case '2':
i=0;
printf("Inserisci codice Articolo: ");
scanf("%d", &ID);
/* apre il file */
if ((fd = fopen("magazzino.txt", "r+")) != NULL)
{
while(EOF!=fscanf(fd, "%d %s %d\n", &Articolo[i].codice, &Articolo[i].nome, &Articolo[i].quantita))
/* verifica se l'oggetto è presente */
{
if(ID == Articolo[i].codice)
{
printf("%d",i);
printf( "Prodotto presente inserisci la quantita da variare preceduta da +o-:.\n");
scanf("%d", &var);
qprovv = Articolo[i].quantita + var;
printf("%d", Articolo[i].quantita);
fprintf(fd, "%d %s %d", Articolo[i].codice, Articolo[i].nome, qprovv);
printf( "La quantita' presente in magazzino dell'oggetto %d e' stata variata.\n\n", ID);
g = 1;
break;
}
i++;
}
if(g== 0)
{
printf("Oggetto non presente.\n\n");
break;
}
}
else (printf("ERRORE NELL'APERTURA DEL FILE"));
fclose(fd);
g=0;
j=0;
break;
case '3':
/* apre il file */
i=0;
if ((fd = fopen("magazzino.txt", "r+")) != NULL)
{
while(EOF!=fscanf(fd, "%d %s %d\n", &Articolo[i].codice, &Articolo[i].nome, &Articolo[i].quantita))
i++;
}
else (printf("ERRORE NELL'APERTURA DEL FILE\n"));
/* visualizza l'intero magazzino */
for (j=0; j< i; j++)
{
printf("%d %s %d\n", Articolo[j].codice, Articolo[j].nome, Articolo[j].quantita);
exit;
}
fclose(fd);
j=0;
i=0;
break;
case '0':
return 0;
}
while(!getchar());
}
while(c);
}