Hofatto questo codice e riesco a fare il primo passaggio di caricamento->lettura->cancellazione ma se lo rieseguo il programma non va… ti posto il codice delle due funzioni:
void caricofilefilm(films FT[]){
FILE *file_filmregistry;
char filename[] = "film_registry.txt";
file_filmregistry = fopen("film_registry.txt", "r");
FILE *file_filmregistrytemp;
char filenametemp[] = "film_registrytemp.txt";
file_filmregistrytemp = fopen(filenametemp, "w");
int film_count;
int total_film_count = INITIALIZER;
total_film_count=count_rows(total_film_count);
char ID_remove[3+1];
int ID_remove_int=0;
char riga[5000];
char* token;
const char delimiters[2]=";";
rewind(file_filmregistry);
//leggo il file
//lettura fino alla fine del file
printf("funziono\n");
for (int i=0; i<total_film_count; i++){
fgets(riga, sizeof(riga), file_filmregistry); //lettura riga per riga
token = strtok (riga, delimiters);
strcpy(FT[i].id, token);
token = strtok (NULL, delimiters);
strcpy(FT[i].nome, token);
token = strtok (NULL, delimiters);
strcpy(FT[i].trama, token);
token = strtok (NULL, delimiters);
strcpy(FT[i].tipologia, token);
token = strtok (NULL, delimiters);
strcpy(FT[i].stagioni, token);
token = strtok (NULL, delimiters);
strcpy(FT[i].puntate, token);
token = strtok (NULL, delimiters);
strcpy(FT[i].durata, token);
printf("%s %s %s %s\n", FT[i].id, FT[i].nome, FT[i].trama, FT[i].tipologia);
}
fclose(file_filmregistry);
fclose(file_filmregistrytemp);
}
void eliminarecord(films FT[]){
FILE *file_filmregistry;
char filename[] = "film_registry.txt";
file_filmregistry = fopen(filename, "r");
FILE *file_filmregistrytemp;
char filenametemp[] = "film_registrytemp.txt";
file_filmregistrytemp = fopen(filenametemp, "w");
int total_film_count = INITIALIZER;
total_film_count=count_rows(total_film_count);
char ID_remove[3+1];
int ID_remove_int=0;
char riga[5000];
char* token;
const char delimiters[2]=";";
int i=0;
int scelta=0;
rewind(file_filmregistry);
printf("dato da visualizzar?:");
scanf("%d", &scelta);
printf("%s - %s - %s - %s - %s - %s\n", FT[scelta-1].id, FT[scelta-1].nome, FT[scelta-1].trama, FT[scelta-1].tipologia, FT[scelta-1].stagioni, FT[scelta-1].puntate, FT[scelta-1].durata);
strcpy(FT[scelta-1].id, " ");
strcpy(FT[scelta-1].nome, " ");
strcpy(FT[scelta-1].trama, " ");
strcpy(FT[scelta-1].tipologia, " ");
strcpy(FT[scelta-1].stagioni, " ");
strcpy(FT[scelta-1].puntate, " ");
strcpy(FT[scelta-1].durata, " ");
printf("%s - %s - %s - %s - %s - %s\n", FT[scelta-1].id, FT[scelta-1].nome, FT[scelta-1].trama, FT[scelta-1].tipologia, FT[scelta-1].stagioni, FT[scelta-1].puntate, FT[scelta-1].durata);
printf("%d", total_film_count);
for(i=0;i<total_film_count;i++){
if(strcmp(FT[i].id, " ")){
fprintf(file_filmregistrytemp, "%s;%s;%s;%s;%s;%s\n", FT[i].id, FT[i].nome, FT[i].trama, FT[i].tipologia, FT[i].stagioni, FT[i].puntate, FT[i].durata);
}
}
fclose(file_filmregistry);
fclose(file_filmregistrytemp);
remove(filename);
rename(filenametemp, filename);
}