#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <fcntl.h>
#include <unistd.h>
#define LUNG_MAX_TITOLO 40 /*indica la lunghezza massima del titolo del film*/
#define LUNG_MAX_NOMI 35 /*indica la lunghezza massima del cognome + nome di attori e regista*/
#define LUNG_MAX_ANNO 4 /*indica la lunghezza massima di un anno*/
#define NUM_MAX_FILM 10000 /*indica il numero di film per cui il Cont va avanti (è indicata la cifra ipotetica di 10.000)*/
#define LINEE_PAR 10 /*sono le linee dei parametri quando si salvano nel file (n° parametri 8 + 2 linee vuote)*/
typedef char TipoTitolo[LUNG_MAX_TITOLO];
typedef enum {azione,avventura,commedia,drammatico,cartone_animato,sacro,documentario,spettacolo,concerto,porno,altro}TipoCategoria;
typedef enum {DVD,VHS,DivX}TipoSupporto;
typedef char TipoPersona [LUNG_MAX_NOMI];
typedef struct
{
TipoTitolo Titolo; /*titolo del film*/
TipoCategoria Categoria; /*indica la categoria del film*/
TipoSupporto Supporto; /*indica il supporto su qui è registrato il film*/
TipoTitolo NomeSupporto; /*indica il nome del supporto su cui è presente il film*/
TipoPersona Attore1; /*indica il nome dell'attore principale*/
TipoPersona Attore2; /*indica il nome dell'attore secondario*/
TipoPersona Regista; /*indica il nome del regista, se sono due quello del principale*/
int Anno; /*indica l'anno in cui è stato pubblicato il film*/
} TipoFilm;
typedef struct EL
{
TipoFilm Dato;
struct EL* Prossimo;
} TipoElenco;
FILE* file_elenco_film; /*punta al file dove sono contenuti i titoli dei film*/
FILE* file_numero_film; /*punta al file che contiene il numero di film registrati*/
TipoFilm AggiungiFilm (TipoTitolo Titolo); /*serve ad aggiungere un film nell'elenco*/
int main ()
{
TipoElenco* RiempiElenco (void);
/*restituisce un puntatore alla Testa dell'elenco di film*/
void NumeroFilmIn (void);
/*serve a indicare e stampare il numero di film inseriti e quelli rimasti da inserire*/
void VisualizzaFilm (void);
/*serve a caricare i film già salvati nel file e stamparli a schermo*/
TipoElenco* AggiungiNuovoFilm (void);
/*serve, una volta che si è già costruito un elenco di film, ad aggiungere uno o più film*/
void RicercaFilm (void);
/*serve a caricare i film dall'elenco e cercare un film con dei parametri inseriti dall'utente*/
void ModificaFilm (int SpazioInput);
/*serve a modificare il parametro di un film già inserito nell'elenco*/
void Disinstallazione (void);
/*serve a rimuovere tutti i file e cartelle del programma*/
DIR* trova_directory; /*serve a verificare l'esistenza della directory dove si salveranno i file*/
TipoElenco* TestaElenco;
int SceltaOperazione; /*serve per scegliere l'operazione da fare*/
char Vuoto[LUNG_MAX_NOMI];
int Error; /*serve a contenere l'eventuale errore nella mkdir()*/
int Continua; /*serve per continuare a modificare film*/
int SpazioInput; /*se è stato modificato più di un film inserisce un Vuoto*/
char Risposta; /*contiene s o n*/
printf ("\n\n\t\tRACCOGLITORE FILM\n\n");
trova_directory=opendir ("C://film");
if (trova_directory==NULL)
{
printf ("\nNon è stata trovata la directory \"C://film\" dove andranno salvati i file del programma.");
printf ("\nVerrà creata la directory necessaria al programma. Premi Enter\n");
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
Error=mkdir ("C://film");
if (Error==-1)
{
printf ("\nErrore nella creazione della cartella.\n");
printf ("\nPremere il tasto 'Esc' per uscire dal programma.\n\n");
getch();
return (0);
}
printf ("\nLa directory \"C://film\" è stata creata correttamente.\n");
}
file_elenco_film=fopen("C://film/elenco film.txt","r");
if (NULL==file_elenco_film)
{
printf ("\nNessun elenco di film trovato. Si verrà indirizzati direttamente alla creazione di un elenco. Premi Enter.\n");
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
TestaElenco=RiempiElenco();
fclose (file_elenco_film);
printf ("\nPremere il tasto 'Esc' per uscire dal programma.\n\n");
getch();
return (0);
}
fclose (file_elenco_film);
closedir (trova_directory);
printf ("\nScegliere cosa fare:");
printf ("\naggiungere un film (1), creare un elenco di film (2), visualizzare i film (3), cercare dei film (4), modificare un film (5), numero di film inseriti (6), disinstallare il programma (7).");
printf ("\n\nDigitare la scelta: ");
scanf ("%d",&SceltaOperazione);
if (SceltaOperazione==1)
{
printf ("\nHai scelto di aggiungere un film. Premi Enter\n");
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
AggiungiNuovoFilm ();
}
if (SceltaOperazione==2)
{
printf ("\nHai scelto di creare un elenco di film. Questo sostituira l'elenco già presente.\n");
printf ("Si è sicuri di voler continuare (s/n)? ");
scanf ("%s",&Risposta);
if (Risposta=='s')
{
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
TestaElenco=RiempiElenco();
}
else if (Risposta=='n')
{
goto TerminaProg;
}
}
if (SceltaOperazione==3)
{
printf ("\nHai scelto di vedere tutti i film inseriti nell'elenco. Premi Enter\n");
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
VisualizzaFilm ();
}
if (SceltaOperazione==4)
{
printf ("\nHai scelto di cercare i film inseriti nell'elenco secondo un parametro. Premi Enter\n");
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
RicercaFilm ();
}
if (SceltaOperazione==5)
{
printf ("\nHai scelto di modificare il parametro di un film scelto. Premi Enter\n");
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
SpazioInput=0;
do
{
ModificaFilm (SpazioInput);
printf ("\n\nVuoi modificare altri film? ");
printf ("\n(Inserire un numero negativo per terminare l'input, uno positivo per avanzare) ");
scanf ("%d",&Continua);
if (Continua<0)
{
printf ("\n\nModifiche terminate.\n\n");
break;
}
++SpazioInput;
} while (Continua>0);
}
if (SceltaOperazione==6)
{
printf ("\nHai scelto di vedere il numero di film inseriti nell'elenco e i posti rimanenti. Premi Enter\n");
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
NumeroFilmIn();
}
if (SceltaOperazione==7)
{
printf ("\nHai scelto di disinstallare il programma. Si è sicuri di voler continuare (s/n)? ");
scanf ("%s",&Risposta);
if (Risposta=='s')
{
fgets (Vuoto,LUNG_MAX_NOMI,stdin);
Disinstallazione();
}
else if (Risposta=='n')
{
goto TerminaProg;
}
}
if ((SceltaOperazione >7) || (SceltaOperazione<1))
{
printf ("\nERRORE: Comando errato. Verificare il numero inserito.\n");
}
TerminaProg:
printf ("\nPremere il tasto 'Esc' per uscire dal programma.\n\n");
getch();
return (0);
}
/***************************************************************************************************************/
TipoElenco* RiempiElenco ()
{
file_elenco_film=fopen ("C://film/elenco film.txt","w");
fclose (file_elenco_film);
file_numero_film=fopen ("C://film/numero film.txt","w");
fclose (file_numero_film);
TipoElenco* Testa; /*è la testa dell'elenco dei film*/
TipoElenco* NuovoFilm; /*punta ad un nuovo film dell'elenco appena aggiunto*/
int Cont; /*serve per tenere il conto dei film inseriti*/
int Input;
int ContFilm; /*serve per contare il numero di film inseriti*/
char Vuoto[LUNG_MAX_NOMI]; /*serve per fare una fgets vuota (se no le successive non funzionano)*/
Testa=NULL;
printf ("\nInserimento dei film:");
printf ("\nN.B.\tI campi Categoria e Supporto sono obbligatori. Negli altri campi, se non se ne è a conoscenza, possono essere immessi trattini.");
printf ("\n\tI campi coi trattini non saranno oggetto di ricerca. Premi Enter per continuare.\n");
Cont=0;
ContFilm=0;
while (Cont<NUM_MAX_FILM)
{
if (Cont==NUM_MAX_FILM-1)
{
printf ("\n\nULTIMA possibilità di inserimento di film!!!\n\n");
}
NuovoFilm=malloc (sizeof(TipoElenco));
fgets (Vuoto,LUNG_MAX_NOMI,stdin); /*è una chiamata a vuoto che permette di azionare gli fgets successivi*/
printf ("\n\n\tFilm n§%d:",Cont
+1
);
printf ("\n\nInserire il titolo del film: ");
fgets ((NuovoFilm->Dato.Titolo),LUNG_MAX_TITOLO,stdin);
NuovoFilm->Dato=AggiungiFilm (NuovoFilm->Dato.Titolo);
NuovoFilm->Prossimo=NULL;
Testa=NuovoFilm;
++ContFilm;
++Cont;
printf ("\n\nVuoi inserire altri film? ");
printf ("\n(Inserire un numero negativo per terminare l'input, uno positivo per avanzare) ");
scanf ("%d",&Input);
if (Input<0)
{
printf ("\n\n\tBuona visione!\n\n");
break;
}
}
if (Cont>=NUM_MAX_FILM)
{
printf ("\n\nCi dispiace ma NON è più possibile inserire film.\n\n");
}
file_numero_film=fopen ("C://film/numero film.txt","a");
fprintf (file_numero_film,"%d",ContFilm);
fclose (file_numero_film);
return (Testa);
}
/***********************************************************************************************************/
TipoFilm AggiungiFilm (TipoTitolo Titolo)
{
TipoFilm Film;
int Categoria; /*serve per raccogliere l'intero che rappresenta la categoria*/
int Supporto; /*serve per raccogliere l'intero che rappresenta il supporto*/
char TipoSupporto; /*contiene il tipo di supporto: dvd,vhs,...*/
int Anno; /*serve per contenere l'anno di pubblicazione del film*/
char Vuoto[LUNG_MAX_NOMI]; /*serve per fare una fgets vuota (se no le successive non funzionano*/
file_elenco_film=fopen ("C://film/elenco film.txt","a");
strcpy (Film.Titolo,Titolo);
fputs (Film.Titolo,file_elenco_film);
printf ("\nScegliere tra: azione (0), avventura (1), commedia (2), cartone animato (3), sacro (4), documentario (5), spettacolo (6), concerto (7), porno (8), altro (9) ");
scanf ("%d",&Categoria);
while ((Categoria<0) || (Categoria>9))
{
printf ("\nIl numero inserito non corrisponde a nessuna categoria. Controllare e re-inserire.");
printf ("\nRe-inserire il numero della categoria: ");
scanf ("%d",&Categoria);
}
if (Categoria==0)
{
Film.Categoria=azione;
fprintf (file_elenco_film,"azione\n");
}
if (Categoria==1)
{
Film.Categoria=avventura;
fprintf (file_elenco_film,"avventura\n");
}
if (Categoria==2)
{
Film.Categoria=commedia;
fprintf (file_elenco_film,"commedia\n");
}
if (Categoria==3)
{
Film.Categoria=cartone_animato;
fprintf (file_elenco_film,"cartone animato\n");
}
if (Categoria==4)
{
Film.Categoria=sacro;
fprintf (file_elenco_film,"sacro\n");
}
if (Categoria==5)
{
Film.Categoria=documentario;
fprintf (file_elenco_film,"documentario\n");
}
if (Categoria==6)
{
Film.Categoria=spettacolo;
fprintf (file_elenco_film,"spettacolo\n");
}
if (Categoria==7)
{
Film.Categoria=concerto;
fprintf (file_elenco_film,"concerto\n");
}
if (Categoria==8)
{
Film.Categoria=porno;
fprintf (file_elenco_film,"porno\n");
}
if (Categoria==9)
{
Film.Categoria=altro;
fprintf (file_elenco_film,"altro\n");
}
printf ("\nInserire il tipo di supporto su cui è presente il film:");
printf ("\nScegliere tra: DVD (0), VHS (1), DivX (2) ");
scanf ("%d",&Supporto);
while ((Supporto<0) || (Supporto>2))
{
printf ("\nIl numero inserito non corrisponde a nessun supporto. Controllare e re-inserire.");
printf ("\nRe-inserire il numero del supporto: ");
scanf ("%d",&Supporto);
}
if (Supporto==0)
{
Film.Supporto=DVD;
fprintf (file_elenco_film,"DVD\n");
}
if (Supporto==1)
{
Film.Supporto=VHS;
fprintf (file_elenco_film,"VHS\n");
}
if (Supporto==2)
{
Film.Supporto=DivX;
fprintf (file_elenco_film,"DivX\n");
}
fgets (Vuoto,LUNG_MAX_NOMI,stdin); /*è una chiamata a vuoto che permette di azionare gli fgets successivi*/
printf ("\nScrivere il nome del ");
if (Film.Supporto==0)
{
}
if (Film.Supporto==1)
{
}
if (Film.Supporto==2)
{
}
printf (" su cui è presente il film (digitare '=' per nominare il supporto come il titolo del film): ");
fgets (Film.NomeSupporto,LUNG_MAX_NOMI,stdin);
if (strcmp (Film.NomeSupporto,"=\n")==0)
{
fprintf (file_elenco_film,"%s",Film.Titolo);
}
else
{
fprintf (file_elenco_film,"%s",Film.NomeSupporto);
}
printf ("\nScrivere il nome dell'attore/attrice principale: ");
fgets (Film.Attore1,LUNG_MAX_NOMI,stdin);
fprintf (file_elenco_film,"%s",Film.Attore1);
printf ("\nScrivere il nome dell'attore/attrice secondario/a: ");
fgets (Film.Attore2,LUNG_MAX_NOMI,stdin);
fprintf (file_elenco_film,"%s",Film.Attore2);
printf ("\nScrivere il nome del regista: ");
fgets (Film.Regista,LUNG_MAX_NOMI,stdin);
fprintf (file_elenco_film,"%s",Film.Regista);
printf ("\nInserire l'anno (digitare '0' se non si conosce) in cui è stato pubblicato o acquistato il film: ");
scanf ("%d",&(Film.Anno));
while ((((Film.Anno)>9999) && ((Film.Anno)!=0)) || (((Film.Anno<1000)) && ((Film.Anno)!=0))) /*ovvero se ha 5 cifre (cosa impossibile dato che un anno ne ha 4)*/
{
printf ("\nL'anno inserito è scritto in maniera errata, si prega di riscriverlo.");
printf ("\nRe-inserire l'anno in cui è stato pubblicato il film (o in cui si è acquistato): ");
scanf ("%d",&(Film.Anno));
}
if (Film.Anno==0) /*è la codifica in decimale del '-' messo dall'utente per indicare che non si conosce l'anno*/
{
fprintf (file_elenco_film,"-\n");
}
else
{
fprintf (file_elenco_film,"%d\n",Film.Anno);
}
fprintf (file_elenco_film,"\n\n");
fclose (file_elenco_film);
return (Film);
}
/***********************************************************************************************************/
void NumeroFilmIn ()
{
file_numero_film=fopen ("C://film/numero film.txt","r");
int NumeroFilm; /*serve a memorizzare il numero di film salvati su disco*/
int NumFilmRimasti; /*serve per memorizzare il numero di film che si possono ancora inserire*/
fscanf (file_numero_film,"%d",&NumeroFilm);
printf ("\nNumero di film inseriti: %d su %d disponibili.\n",NumeroFilm
,NUM_MAX_FILM
);
NumFilmRimasti=NUM_MAX_FILM-NumeroFilm;
printf ("\nIl numero dei film che si possono ancora inserire è %d.\n",NumFilmRimasti
);
fclose (file_numero_film);
return;
}
/*************************************************************************************************************/
void VisualizzaFilm ()
{
file_numero_film=fopen ("C://film/numero film.txt","r");
int NumeroFilm; /*serve a memorizzare il numero di film salvati sul disco*/
int Cont,ContR;
file_numero_film=fopen ("C://film/numero film.txt","r");
fscanf (file_numero_film, "%d",&NumeroFilm);
fclose (file_numero_film);
file_elenco_film=fopen ("C://film/elenco film.txt","r");
typedef TipoTitolo TipoMatrice[NumeroFilm*LINEE_PAR][1];
TipoMatrice Matrice;
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fgets (Matrice[Cont][1],LUNG_MAX_TITOLO,file_elenco_film);
}
ContR=0;
while (ContR<NumeroFilm)
{
printf ("\nFilm n§%d:\t",ContR
+1
);
for (Cont=ContR*LINEE_PAR;Cont<(ContR*LINEE_PAR)+LINEE_PAR;++Cont)
{
printf ("%s\t\t",Matrice
[Cont
][1
]);
}
++ContR;
sleep (650);
}
fclose (file_elenco_film);
return;
}
/***********************************************************************************************************/
TipoElenco* AggiungiNuovoFilm ()
{
int VerificaEsiste (TipoTitolo Titolo,int NumeroFilm); /*verifica se, all'inserimento del titolo, esiste un film con uguale titolo*/
void VediFilmUguale (TipoTitolo Titolo,int NumeroFilm); /*fa vedere, se richiesto, il film con uguale titolo a quello di input*/
TipoElenco* Testa; /*è la testa dell'elenco dei film*/
TipoElenco* NuovoFilm; /*punta ad un nuovo film dell'elenco appena aggiunto*/
int Cont; /*serve per tenere il conto dei film inseriti*/
int Input,Risposta;
int ContFilm; /*serve per contare il numero di film inseriti*/
int Risultato; /*contiene il risultato della funzione VerificaEsiste*/
char Vuoto[LUNG_MAX_NOMI]; /*serve per fare una fgets vuota (se no le successive non funzionano*/
file_numero_film=fopen("C://film/numero film.txt","r");
fscanf (file_numero_film,"%d",&ContFilm); /*prende il numero di film già inseriti*/
fclose (file_numero_film);
file_numero_film=fopen ("C://film/numero film.txt","w");
fclose (file_numero_film);
Testa=NULL;
printf ("\nInserimento dei film:");
printf ("\nN.B.\tI campi Categoria e Supporto sono obbligatori. Negli altri campi, se non se ne è a conoscenza, possono essere immessi trattini.");
printf ("\n\tI campi coi trattini non saranno oggetto di ricerca. Premi Enter per continuare.\n");
Cont=ContFilm;
while (Cont<NUM_MAX_FILM)
{
if (Cont==NUM_MAX_FILM-1)
{
printf ("\n\nULTIMA possibilità di inserimento di film!!!\n\n");
}
NuovoFilm=malloc (sizeof(TipoElenco));
fgets (Vuoto,LUNG_MAX_NOMI,stdin); /*è una chiamata a vuoto che permette di azionare gli fgets successivi*/
printf ("\n\n\tFilm n§%d:",Cont
+1
);
printf ("\n\nInserire il titolo del film: ");
fgets ((NuovoFilm->Dato.Titolo),LUNG_MAX_TITOLO,stdin);
Risultato=VerificaEsiste (NuovoFilm->Dato.Titolo,ContFilm);
if (Risultato==1)
{
printf ("\nE' stato trovato %d film con lo stesso titolo di quello inserito\n",Risultato
);
printf ("Cosa vuoi fare: continuare l'inserimento del film (1) o vedere il film con lo stesso titolo già presente in archivio (2)? ");
scanf ("%d",&Risposta);
while (Risposta<1 || Risposta>2)
{
printf ("\nHai sbagliato a digitare il numero.");
printf ("\nRidigitare il numero corrispondente alla scelta: ");
scanf ("%d",&Risposta);
}
if (Risposta==1) goto ContinuaInput;
if (Risposta==2) VediFilmUguale (NuovoFilm->Dato.Titolo,ContFilm);
printf ("\nHai visto il film che ha lo stesso titolo del film che stavi inserendo.");
printf ("\nCosa vuoi fare: continuare l'inserimento del film che stavi inserendo (1), inserire un nuovo film terminando quello precedente (2), terminare l'inserimento dei film (3)? ");
scanf ("%d",&Risposta);
while (Risposta<1 || Risposta>3)
{
printf ("\nHai sbagliato a digitare il numero.");
printf ("\nRidigitare il numero corrispondente alla scelta: ");
scanf ("%d",&Risposta);
}
if (Risposta==1) goto ContinuaInput;
if (Risposta==2) continue;
if (Risposta==3)
{
printf ("\n\n\tBuona visione!\n\n");
break;
}
}
else if (Risultato>1)
{
printf ("\nSono stati trovati %d film con lo stesso titolo di quello inserito\n",Risultato
);
printf ("Cosa vuoi fare: continuare l'inserimento del film (1) o vedere i film con lo stesso titolo già presenti in archivio (2)? ");
scanf ("%d",&Risposta);
while (Risposta<1 || Risposta>2)
{
printf ("\nHai sbagliato a digitare il numero.");
printf ("\nRidigitare il numero corrispondente alla scelta: ");
scanf ("%d",&Risposta);
}
if (Risposta==1) goto ContinuaInput;
if (Risposta==2) VediFilmUguale (NuovoFilm->Dato.Titolo,ContFilm);
printf ("\nHai visto i film che hanno lo stesso titolo del film che stavi inserendo.");
printf ("\nCosa vuoi fare: continuare l'inserimento del film che stavi inserendo (1), inserire un nuovo film terminando quello precedente (2), terminare l'inserimento dei film (3)? ");
scanf ("%d",&Risposta);
while (Risposta<1 || Risposta>3)
{
printf ("\nHai sbagliato a digitare il numero.");
printf ("\nRidigitare il numero corrispondente alla scelta: ");
scanf ("%d",&Risposta);
}
if (Risposta==1) goto ContinuaInput;
if (Risposta==2) continue;
if (Risposta==3)
{
printf ("\n\n\tBuona visione!\n\n");
break;
}
}
ContinuaInput:
NuovoFilm->Dato=AggiungiFilm (NuovoFilm->Dato.Titolo);
NuovoFilm->Prossimo=NULL;
Testa=NuovoFilm;
++ContFilm;
++Cont;
printf ("\n\nVuoi inserire altri film? ");
printf ("\n(Inserire un numero negativo per terminare l'input, uno positivo per avanzare) ");
scanf ("%d",&Input);
if (Input<0)
{
printf ("\n\n\tBuona visione!\n\n");
break;
}
}
if (Cont>=NUM_MAX_FILM)
{
printf ("\n\nCi dispiace ma NON è più possibile inserire film.\n\n");
}
file_numero_film=fopen ("C://film/numero film.txt","a");
fprintf (file_numero_film,"%d",ContFilm);
fclose (file_numero_film);
return (Testa);
}
/********************************************************************************************************/
void RicercaFilm ()
{
int NumeroFilm; /*serve a memorizzare il numero di film salvati sul disco*/
int Cont,Cont2,ContFilm,Parametro;
int ContNonUguali; /*cresce ogni volta che strcmp da esito negativo*/
TipoTitolo Ricerca; /*serve per contenere il parametro da cercare*/
char Vuoto[LUNG_MAX_TITOLO];
int LungStringa;
file_numero_film=fopen ("C://film/numero film.txt","r");
fscanf (file_numero_film, "%d",&NumeroFilm);
fclose (file_numero_film);
file_elenco_film=fopen ("C://film/elenco film.txt","r");
typedef TipoTitolo TipoMatrice[NumeroFilm*LINEE_PAR][1];
TipoMatrice Matrice;
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fgets (Matrice[Cont][1],LUNG_MAX_TITOLO,file_elenco_film);
}
fclose (file_elenco_film);
printf ("Inserire il parametro di ricerca.");
printf ("\nScegliere tra: titolo (0), categoria (1), supporto (2), nome del supporto (3), attore principale (4), attore secondario (5), regista (6), anno (7): ");
scanf ("%d",&Parametro);
if (Parametro==0)
{
printf ("\n\nInserire il titolo del film da cercare: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (Ricerca,LUNG_MAX_TITOLO,stdin);
LungStringa=strlen(Ricerca);
Ricerca[LungStringa-1]=0; /*toglie il \n alla fine di Ricerca*/
Cont=Parametro;
ContFilm=0;
ContNonUguali=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (strstr (Matrice[Cont][1],Ricerca)>=Matrice[Cont][1])
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont2=Cont-Parametro;Cont2<((Cont-Parametro)+LINEE_PAR);++Cont2)
{
printf ("%s\t\t",Matrice
[Cont2
][1
]);
}
sleep (650);
}
else
{
++ContNonUguali;
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
if (ContNonUguali==NumeroFilm)
{
printf ("\nNessun film corrisponde al parametro di ricerca fornito.\n\n");
}
}
if (Parametro==1)
{
printf ("\n\nInserire la categoria del film da cercare. ");
printf ("\nScegliere tra: azione, avventura, commedia, cartone animato, sacro, documentario, spettacolo, concerto, porno, altro: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (Ricerca,LUNG_MAX_TITOLO,stdin);
LungStringa=strlen(Ricerca);
Ricerca[LungStringa-1]=0; /*toglie il \n alla fine di Ricerca*/
Cont=Parametro;
ContFilm=0;
ContNonUguali=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (strstr (Matrice[Cont][1],Ricerca)>=Matrice[Cont][1])
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont2=Cont-Parametro;Cont2<((Cont-Parametro)+LINEE_PAR);++Cont2)
{
printf ("%s\t\t",Matrice
[Cont2
][1
]);
}
sleep (650);
}
else
{
++ContNonUguali;
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
if (ContNonUguali==NumeroFilm)
{
printf ("\nNessun film corrisponde al parametro di ricerca fornito.\n\n");
}
}
if (Parametro==2)
{
printf ("\n\nInserire il supporto su cui è registrato il film da cercare. ");
printf ("\nScegliere tra: DVD, VHS, DivX: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (Ricerca,LUNG_MAX_TITOLO,stdin);
LungStringa=strlen(Ricerca);
Ricerca[LungStringa-1]=0; /*toglie il \n alla fine di Ricerca*/
Cont=Parametro;
ContFilm=0;
ContNonUguali=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (strstr (Matrice[Cont][1],Ricerca)>=Matrice[Cont][1])
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont2=Cont-Parametro;Cont2<((Cont-Parametro)+LINEE_PAR);++Cont2)
{
printf ("%s\t\t",Matrice
[Cont2
][1
]);
}
sleep (650);
}
else
{
++ContNonUguali;
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
if (ContNonUguali==NumeroFilm)
{
printf ("\nNessun film corrisponde al parametro di ricerca fornito.\n\n");
}
}
if (Parametro==3)
{
printf ("\n\nInserire il nome del supporto su cui è presente il film da cercare: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (Ricerca,LUNG_MAX_TITOLO,stdin);
LungStringa=strlen(Ricerca);
Ricerca[LungStringa-1]=0; /*toglie il \n alla fine di Ricerca*/
Cont=Parametro;
ContFilm=0;
ContNonUguali=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (strstr (Matrice[Cont][1],Ricerca)>=Matrice[Cont][1])
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont2=Cont-Parametro;Cont2<((Cont-Parametro)+LINEE_PAR);++Cont2)
{
printf ("%s\t\t",Matrice
[Cont2
][1
]);
}
sleep (650);
}
else
{
++ContNonUguali;
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
if (ContNonUguali==NumeroFilm)
{
printf ("\nNessun film corrisponde al parametro di ricerca fornito.\n\n");
}
}
if (Parametro==4)
{
printf ("\n\nInserire il nome dell'attore/attrice principale del film da cercare: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (Ricerca,LUNG_MAX_TITOLO,stdin);
LungStringa=strlen(Ricerca);
Ricerca[LungStringa-1]=0; /*toglie il \n alla fine di Ricerca*/
Cont=Parametro;
ContFilm=0;
ContNonUguali=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (strstr (Matrice[Cont][1],Ricerca)>=Matrice[Cont][1])
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont2=Cont-Parametro;Cont2<((Cont-Parametro)+LINEE_PAR);++Cont2)
{
printf ("%s\t\t",Matrice
[Cont2
][1
]);
}
sleep (650);
}
else
{
++ContNonUguali;
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
if (ContNonUguali==NumeroFilm)
{
printf ("\nNessun film corrisponde al parametro di ricerca fornito.\n\n");
}
}
if (Parametro==5)
{
printf ("\n\nInserire il nome dell'attore/attrice secondario/a del film da cercare: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (Ricerca,LUNG_MAX_TITOLO,stdin);
LungStringa=strlen(Ricerca);
Ricerca[LungStringa-1]=0; /*toglie il \n alla fine di Ricerca*/
Cont=Parametro;
ContFilm=0;
ContNonUguali=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (strstr (Matrice[Cont][1],Ricerca)>=Matrice[Cont][1])
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont2=Cont-Parametro;Cont2<((Cont-Parametro)+LINEE_PAR);++Cont2)
{
printf ("%s\t\t",Matrice
[Cont2
][1
]);
}
sleep (650);
}
else
{
++ContNonUguali;
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
if (ContNonUguali==NumeroFilm)
{
printf ("\nNessun film corrisponde al parametro di ricerca fornito.\n\n");
}
}
if (Parametro==6)
{
printf ("\n\nInserire il nome del regista del film da cercare: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (Ricerca,LUNG_MAX_TITOLO,stdin);
LungStringa=strlen(Ricerca);
Ricerca[LungStringa-1]=0; /*toglie il \n alla fine di Ricerca*/
Cont=Parametro;
ContFilm=0;
ContNonUguali=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (strstr (Matrice[Cont][1],Ricerca)>=Matrice[Cont][1])
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont2=Cont-Parametro;Cont2<((Cont-Parametro)+LINEE_PAR);++Cont2)
{
printf ("%s\t\t",Matrice
[Cont2
][1
]);
}
sleep (650);
}
else
{
++ContNonUguali;
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
if (ContNonUguali==NumeroFilm)
{
printf ("\nNessun film corrisponde al parametro di ricerca fornito.\n\n");
}
}
if (Parametro==7)
{
printf ("\n\nInserire l'anno di pubblicazione del film da cercare: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (Ricerca,LUNG_MAX_TITOLO,stdin);
LungStringa=strlen(Ricerca);
Ricerca[LungStringa-1]=0; /*toglie il \n alla fine di Ricerca*/
Cont=Parametro;
ContFilm=0;
ContNonUguali=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (strstr (Matrice[Cont][1],Ricerca)>=Matrice[Cont][1])
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont2=Cont-Parametro;Cont2<((Cont-Parametro)+LINEE_PAR);++Cont2)
{
printf ("%s\t\t",Matrice
[Cont2
][1
]);
}
sleep (650);
}
else
{
++ContNonUguali;
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
if (ContNonUguali==NumeroFilm)
{
printf ("\nNessun film corrisponde al parametro di ricerca fornito.\n\n");
}
}
return;
}
/************************************************************************************************************/
void ModificaFilm (int SpazioInput)
{
FILE* elenco_nuovo;
int NumeroFilm; /*serve a memorizzare il numero di film salvati sul disco*/
int Cont,Cont2,Cont3,ContFilm,ContR;
int ContNonUguali; /*cresce ogni volta che strcmp da esito negativo*/
int ContFilmUguali; /*conta se ci sono più film uguali con lo stesso titolo*/
int NumFilmAttuale;
TipoTitolo Ricerca; /*serve per contenere il parametro da cercare*/
TipoTitolo NuovoValore; /*è il valore da sostituire nella matrice*/
char Vuoto[LUNG_MAX_TITOLO]; /*segna il numero del film che sta stampando*/
int FilmScelto; /*in caso di film uguali contiene il numero del film che si vuole modificare*/
int Parametro; /*contiene il parametro del film da modificare*/
int LungStringa;
file_numero_film=fopen ("C://film/numero film.txt","r");
fscanf (file_numero_film, "%d",&NumeroFilm);
fclose (file_numero_film);
file_elenco_film=fopen ("C://film/elenco film.txt","r");
typedef TipoTitolo TipoMatrice[NumeroFilm*LINEE_PAR][1];
TipoMatrice Matrice;
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fgets (Matrice[Cont][1],LUNG_MAX_TITOLO,file_elenco_film);
}
fclose (file_elenco_film);
if (SpazioInput>0)
{
}
printf ("Inserire il titolo del film da modificare: ");
if (SpazioInput>0)
{
/*se è stato modificato già un film si mette un Vuoto per lasciare inserire Ricerca*/
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
}
fgets (Ricerca,LUNG_MAX_TITOLO,stdin);
LungStringa=strlen(Ricerca);
Ricerca[LungStringa-1]=0; /*toglie il \n alla fine di Ricerca*/
Cont=0;
ContFilm=0;
ContNonUguali=0;
ContFilmUguali=0;
NumFilmAttuale=0;
printf ("\nFilm corrispondenti al titolo inserito:\n");
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (strstr (Matrice[Cont][1],Ricerca)>=Matrice[Cont][1])
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont2=Cont;Cont2<(Cont+LINEE_PAR);++Cont2)
{
NumFilmAttuale=ContFilm+1;
printf ("%s\t\t",Matrice
[Cont2
][1
]);
}
++ContFilmUguali;
}
else
{
++ContNonUguali;
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
if (ContNonUguali==NumeroFilm)
{
printf ("\nNessun film corrisponde al parametro di ricerca fornito.\n\n");
}
/****************** se c'è un solo film che corrisponde al parametro *********************************/
if (ContFilmUguali==1)
{
Cont=0;
ContFilm=0;
ContNonUguali=0;
ContFilmUguali=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (strstr (Matrice[Cont][1],Ricerca)>=Matrice[Cont][1])
{
printf ("\nInserire il parametro che si vuole modificare.");
printf ("\nScegliere tra: categoria (1), supporto (2), nome del supporto (3), attore principale (4), attore secondario (5), regista (6), anno (7): ");
scanf ("%d",&Parametro);
if (1==Parametro)
{
printf ("\nInserisci la nuova categoria.");
printf ("\nScegliere tra: azione, avventura, commedia, cartone animato, sacro, documentario, spettacolo, concerto, porno, altro: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont3=Cont+Parametro;
ContFilm=0;
Cont2=Cont3;
if (Cont2==Cont3)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (2==Parametro)
{
printf ("\nInserisci il nuovo supporto.");
printf ("\nScegliere tra: DVD, VHS, DivX: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont3=Cont+Parametro;
ContFilm=0;
Cont2=Cont3;
if (Cont2==Cont3)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (3==Parametro)
{
printf ("\nInserisci il nuovo nome del supporto su cui è presente il film: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont3=Cont+Parametro;
ContFilm=0;
Cont2=Cont3;
if (Cont2==Cont3)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (4==Parametro)
{
printf ("\nInserisci il nuovo nome dell'attore/attrice principale: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont3=Cont+Parametro;
ContFilm=0;
Cont2=Cont3;
if (Cont2==Cont3)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (5==Parametro)
{
printf ("\nInserisci il nuovo nome dell'attore/attrice secondario/a: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont3=Cont+Parametro;
ContFilm=0;
Cont2=Cont3;
if (Cont2==Cont3)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (6==Parametro)
{
printf ("\nInserisci il nuovo nome del regista: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont3=Cont+Parametro;
ContFilm=0;
Cont2=Cont3;
if (Cont2==Cont3)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (7==Parametro)
{
printf ("\nInserisci il nuovo anno in cui è stato prodotto il film: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont3=Cont+Parametro;
ContFilm=0;
Cont2=Cont3;
if (Cont2==Cont3)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if ((Parametro<1) || (Parametro>7))
{
printf ("\nERRORE: Comando errato. Verificare il numeroinserito.\n");
return;
}
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
fclose (elenco_nuovo);
file_elenco_film=fopen ("C://film/elenco film.txt","r");
printf ("Film con le nuove modifiche:\n");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fgets (Matrice[Cont][1],LUNG_MAX_TITOLO,file_elenco_film);
}
ContR=0;
ContFilm=0;
while (ContR<(NumeroFilm*LINEE_PAR))
{
if (ContR==NumFilmAttuale-1)
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont=ContR*LINEE_PAR;Cont<((ContR*LINEE_PAR)+LINEE_PAR);++Cont)
{
printf ("%s\t\t",Matrice
[Cont
][1
]);
fflush (stdout);
}
}
++ContR;
++ContFilm;
}
}
/*********************** se ci sono più fim uguali ******************************************************/
if (ContFilmUguali>1)
{
printf ("\nATTENZIONE: Ci sono %d film con lo stesso titolo. Inserisci il numero del film: ",ContFilmUguali
);
scanf ("%d",&FilmScelto);
printf ("\n\nFilm scelto:\n");
Cont=0;
ContFilm=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (ContFilm+1==FilmScelto)
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont2=Cont;Cont2<(Cont+LINEE_PAR);++Cont2)
{
printf ("%s\t\t",Matrice
[Cont2
][1
]);
}
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
printf ("\nInserire il parametro che si vuole modificare.");
printf ("\nScegliere tra: categoria (1), supporto (2), nome del supporto (3), attore principale (4), attore secondario (5), regista (6), anno (7): ");
scanf ("%d",&Parametro);
if (1==Parametro)
{
printf ("\nInserisci la nuova categoria.");
printf ("\nScegliere tra: azione, avventura, commedia, cartone animato, sacro, documentario, spettacolo, concerto, porno, altro: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont=Parametro;
ContFilm=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (ContFilm+1==FilmScelto)
{
Cont2=Cont;
if (Cont2==Cont)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (2==Parametro)
{
printf ("\nInserisci il nuovo supporto.");
printf ("\nScegliere tra: DVD, VHS, DivX: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont=Parametro;
ContFilm=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (ContFilm+1==FilmScelto)
{
Cont2=Cont;
if (Cont2==Cont)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (3==Parametro)
{
printf ("\nInserisci il nuovo nome del supporto su cui è presente il film: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont=Parametro;
ContFilm=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (ContFilm+1==FilmScelto)
{
Cont2=Cont;
if (Cont2==Cont)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (4==Parametro)
{
printf ("\nInserisci il nuovo nome dell'attore/attrice principale: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont=Parametro;
ContFilm=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (ContFilm+1==FilmScelto)
{
Cont2=Cont;
if (Cont2==Cont)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (5==Parametro)
{
printf ("\nInserisci il nuovo nome dell'attore/attrice secondario/a: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont=Parametro;
ContFilm=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (ContFilm+1==FilmScelto)
{
Cont2=Cont;
if (Cont2==Cont)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (6==Parametro)
{
printf ("\nInserisci il nuovo nome del regista: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont=Parametro;
ContFilm=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (ContFilm+1==FilmScelto)
{
Cont2=Cont;
if (Cont2==Cont)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if (7==Parametro)
{
printf ("\nInserisci l'anno in cui è stato prodotto il film: ");
fgets (Vuoto,LUNG_MAX_TITOLO,stdin);
fgets (NuovoValore,LUNG_MAX_TITOLO,stdin);
Cont=Parametro;
ContFilm=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (ContFilm+1==FilmScelto)
{
Cont2=Cont;
if (Cont2==Cont)
{
if (0!=strcpy (Matrice[Cont2][1],NuovoValore))
{
printf ("\nCopiatura riuscita\n\n\n");
}
else
{
printf ("\nCopiatura non riuscita\n\n\n");
}
}
else
{
++Cont2;
}
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
elenco_nuovo=fopen ("C://film/elenco film.txt","w");
fclose(elenco_nuovo);
elenco_nuovo=fopen ("C://film/elenco film.txt","a");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fputs (Matrice[Cont][1],elenco_nuovo);
}
}
if ((Parametro<1) || (Parametro>7))
{
printf ("\nERRORE: Comando errato. Verificare il numeroinserito.\n");
return;
}
fclose (elenco_nuovo);
file_elenco_film=fopen ("C://film/elenco film.txt","r");
printf ("Film con le nuove modifiche:\n");
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fgets (Matrice[Cont][1],LUNG_MAX_TITOLO,file_elenco_film);
}
ContR=0;
ContFilm=0;
while (ContR<(NumeroFilm*LINEE_PAR))
{
if (ContR==FilmScelto-1)
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont=ContR*LINEE_PAR;Cont<((ContR*LINEE_PAR)+LINEE_PAR);++Cont)
{
printf ("%s\t\t",Matrice
[Cont
][1
]);
fflush (stdout);
}
}
++ContR;
++ContFilm;
}
}
fclose (file_elenco_film);
return;
}
/***********************************************************************************************************/
int VerificaEsiste (TipoTitolo Titolo,int NumeroFilm)
{
int Cont,ContFilm;
int ContNonUguali; /*cresce ogni volta che strcmp da esito negativo*/
int ContFilmUguali; /*è il numero di film che corrispondono al titolo dato in input*/
char Vuoto[LUNG_MAX_TITOLO];
file_elenco_film=fopen ("C://film/elenco film.txt","r");
typedef TipoTitolo TipoMatrice[NumeroFilm*LINEE_PAR][1];
TipoMatrice Matrice;
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fgets (Matrice[Cont][1],LUNG_MAX_TITOLO,file_elenco_film);
}
fclose (file_elenco_film);
Cont=0;
ContFilmUguali=0;
ContNonUguali=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (0==strcmp (Titolo,Matrice[Cont][1]))
{
++ContFilmUguali;
}
else
{
++ContNonUguali;
}
Cont=Cont+LINEE_PAR;
}
if (ContNonUguali==NumeroFilm)
{
/*restituiamo 0 che indica che non c'è nessun vilm uguale*/
return 0;
}
else
{
/*ritorniamo 1 che significa che è stato trovato un film con lo stesso titolo*/
return (ContFilmUguali);
}
}
/***********************************************************************************************************/
void VediFilmUguale (TipoTitolo Titolo,int NumeroFilm)
{
int Cont,Cont2,ContFilm;
int ContFilmUguali; /*è il numero di film che corrispondono al titolo dato in input*/
char Vuoto[LUNG_MAX_TITOLO];
file_elenco_film=fopen ("C://film/elenco film.txt","r");
typedef TipoTitolo TipoMatrice[NumeroFilm*LINEE_PAR][1];
TipoMatrice Matrice;
for (Cont=0;Cont<(NumeroFilm*LINEE_PAR);++Cont)
{
fgets (Matrice[Cont][1],LUNG_MAX_TITOLO,file_elenco_film);
}
fclose (file_elenco_film);
Cont=0;
ContFilm=0;
ContFilmUguali=0;
while (Cont<(NumeroFilm*LINEE_PAR))
{
if (0==strcmp (Titolo,Matrice[Cont][1]))
{
printf ("\nFilm n§%d:\t",ContFilm
+1
);
for (Cont2=Cont;Cont2<(Cont+LINEE_PAR);++Cont2)
{
printf ("%s\t\t",Matrice
[Cont2
][1
]);
}
++ContFilmUguali;
}
Cont=Cont+LINEE_PAR;
++ContFilm;
}
return;
}
/*******************************************************************************************************/
void Disinstallazione ()
{
int Cont; /*serve solo per creare una barra di progressione*/
printf ("\nSi sta per disinstallare ");
system("del C:\\film\\*.*");
Cont=0;
while (Cont<100)
{
printf ("Eliminazione dei file: %d %% in corso...\r",Cont
);
sleep (50);
++Cont;
}
printf ("Eliminazione dei file: 100 %% \r");
rmdir ("C:\\film");
sleep (200);
printf ("\n\n\nDisinstallazione completata con successo.");
sleep (350);
return;
}