Salve a tutti... sono nuovo nel forum, spero di non sbagliare sezioni o cose simili
Sto cercando di realizzare un piccolo software in C di biblioteca che mi memorizzi su un file txt i valori dei libri che inserisco... tuttavia quando vado a caricare dal programma tale file, i valori di Codice, Titolo, Autore e i vari Tag, mi risultano tutti uguali al primo campo inserito, nel mio caso Codice... visto che nel file txt i valori sono salvati correttamente, il problema è nella parte di codice che si occupa di caricare i valori... penso in particolare su quel "stream" nella fgets... ma non so più come fare qualcuno ha idee??
struct libro *carica(struct libro *head)
{
char word[500];
struct libro *punt = NULL,
*temp = NULL,
*temp1 = NULL;
int index = 0,
i = 0;
punt = head;
FILE *stream = fopen("biblioteca.txt","rwa");
if(stream == NULL) { printf("\n\n Nessun File presente nella cartella"); }
else
{
if(punt != NULL)
{
while(punt->prossimo != NULL)
{
punt = punt->prossimo;
}
nuovo = (struct libro*) malloc(1 * sizeof(struct libro));
punt->prossimo = nuovo;
punt = nuovo;
}
else
{
nuovo = (struct libro*) malloc(1 * sizeof(struct libro));
punt = nuovo;
head = punt;
}
if (stream != NULL)
{
while(fgets(word, 500, stream) != NULL)
{
index = strcspn(word, ",");
strncpy(punt->codice, word, index);
index = strcspn(word, ",");
strncpy(punt->titolo, word, index);
index = strcspn(word, ",");
strncpy(punt->autore, word, index);
for(i=0; i<3; i++)
{
index = strcspn(word, ",");
strncpy(punt->chiavi[i], word, index);
}
nuovo = (struct libro*) malloc(1 * sizeof(struct libro));
punt->prossimo = nuovo;
temp = punt;
temp1 = punt->prossimo;
punt = nuovo;
}
free(temp1);
temp->prossimo = NULL;
printf("\n\n File caricato correttamente!");
}
fflush(stream);
fclose(stream);
return head;
}
}