Ciao ragazzi, ho il seguente problema:
1. ho creato una funzione che mi legge da file le righe e mi crea una lista, nel caso seguente mi crea una lista di strutture chiamate spettacolo:
spettacolo *lettura_Spettacolo(FILE *fp, int sala) {
int colonna = 0;
char buf[BUFFER_SIZE];
spettacolo *testa_S = NULL;
spettacolo *nuovo_Nodo = NULL;
spettacolo *prec_S = NULL;
char *tok;
if (fp == NULL) {
printf("\t\t\t SPETTACOLI sala %d \n", sala);
print_Color("\t\t\t|-----------------------------|\n", COLOR_RED);
print_Color("\t\t\t| File non trovato! |\n", COLOR_RED);
pausa();
return testa_S = NULL;
} else {
while (!feof(fp)) {
fgets(buf, BUFFER_SIZE, fp);
nuovo_Nodo = (spettacolo *) malloc(sizeof(spettacolo));
nuovo_Nodo -> next_Spettacolo = NULL;
// Inserimento in CODA alla lista della nuova struttura caricata
if (prec_S != NULL) {
prec_S -> next_Spettacolo = nuovo_Nodo;
} else {
testa_S = nuovo_Nodo;
}
char *tok;
tok = strtok(buf, ",");
while (tok) {
if (colonna == 0) {
nuovo_Nodo -> sala = atoi(tok);
}
if (colonna == 1) {
nuovo_Nodo -> id = atoi(tok);
}
tok = strtok(NULL, ",");
colonna++;
}
colonna = 0;
prec_S = nuovo_Nodo;
}
}
return testa_S;
}
2. il problema sorge quando salvo una riga (e quindi un elemento) e poi lo rimuovo.
In questo caso mi ritrovo con un file sul disco, ma vuoto.
Ho problemi quando vado a caricare la lista e mi trovo in questo caso, quello che succede è che il puntatore di inizio lista non è NULL ma uno qualsiasi e di conseguenza ho problemi nella gestione della lista.
Come fare ad ottenere il puntatore di inizio lista pari a NULL quando il file è sul disco ma vuoto (senza righe)?
Spero di essere stato chiaro, e vi ringrazio in anticipo. Nel debug mi sono reso conto che effettivamente all'inserimento di un nuovo elemento in lista non mi soddisfa la condizione di avere la testa = NULL.