Ciao a tutti ho un problema con il caricamento di una lista da file.
Ho una strutture del tipo
struct album
{
Stringa TIPO;
Stringa AUTORE;
Stringa TITOLO;
Stringa CASA_DISCOGRAFICA;
int numero_canzoni;
Stringa* ptr_canzoni;
struct album* next;
};
typedef struct album ALBUM;
typedef ALBUM* ptr_album;
Ogni volta che inserisco un album inserisco in testa alla lista.
Per la funzione di salvataggio su file non ci sono problemi.
Quando vado a caricare da file con fscanf( ) mi si blocca il programma o va in loop.
Help pls
wingman87
10-05-2008, 10:20
Ci serve un po' di codice per dire dove sbagli...
(usa il tag CODE)
Sono riuscito a non far bloccare il programma.Ora carica il file,mi ero scordato di allocare memoria.
Ora quando carico il file in memoria e lo faccio stampare a video mi stampa tutto l'album correttamente.Solo le canzoni non me le stampa tranne l'ultima che inserisco.
Ecco il codice.
Questa è la funzione di stampa
int SalvaArchivio( ptr_album plis )
{
FILE* ptr;
int k=0;
ptr_album index;
ptr=fopen("FILE.txt","w");
if(ptr==NULL)
return 0; //errore
index=plis;
while(index!=NULL)
{
fprintf(ptr,"%s\t%s\t%s\t%s\n%d\n",index->TIPO,index->AUTORE,index->TITOLO,index->CASA_DISCOGRAFICA,index->NUMERO_CANZONI);
while(k<index->NUMERO_CANZONI)
{
fprintf(ptr,"%s\n",index->ptr_canzoni[k]);
k++;
}
index=index->NEXT;
}
fclose(ptr);
return 1;
}
Questa è la funzione di caricamento:
ptr_album CaricaArchivio( ptr_album plis )
{
FILE* ptr;
ptr_album index;
int k=0;
ptr=fopen("FILE.txt","r");
if(ptr==NULL)
{
printf("Il file non esiste\n");
return;
}
while(!feof(ptr))
{
index=(ALBUM*)malloc(sizeof(ALBUM));
fscanf(ptr,"%s\t%s\t%s\t%s\n%d\n",&index->TIPO,&index->AUTORE,&index->TITOLO,&index->CASA_DISCOGRAFICA,&index->NUMERO_CANZONI);
while(k<index->NUMERO_CANZONI)
{
index->ptr_canzoni=(Stringa*)malloc(index->NUMERO_CANZONI*sizeof(Stringa));
fscanf(ptr,"%s\n",&index->ptr_canzoni[k]);
k++;
}
index->NEXT=plis;
plis=index;
}
printf("L'archivio e' stato caricato in memoria\n");
fclose(ptr);
return plis;
}
Non credo che riusciate ad aiutarmi in quanto dovreste vedere anche le funzioni di ricerca,inserimento ed altro.
Cmq grazie lo stesso.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.