Codice PHP:
/*
programma palinsesto partite
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define MAX 3000
//creo la struttura
typedef struct {
char programma[MAX];
char reti[MAX];
char ora[MAX];
} palinsesto;
//funzioni
void wpalinsesto();
void rpalinsesto();
int ordina_pal(const void *p1,const void *p2);
void cancella_pal();
void modificadesiderato();
void pausa();
void cancella_tutto();
//main()
main() {
int scelta;
palinsesto p;
for( ; ; ) //for infinito per il menu
{
printf("###MENU PALINSESTO PARTITE###\n");
printf("1 Inserisci Programma nel Palinsesto\n");
printf("2 Leggi Palinsesto\n");
printf("3 Ordina Palinsesto\n");
printf("4 Modifica Palinsesto desiderato\n");
printf("5 Cancella Palinsesto desidetato\n");
printf("7 Cancella tutto\n");
printf("6 Esci\n");
printf("##############################\n");
printf("Inserisci la tua scelta\n");
scanf("%i", &scelta);
scelta = (int)scelta;
if(scelta == 1)
{
wpalinsesto();
}
if(scelta == 2)
{
rpalinsesto();
}
if(scelta == 3)
{
qsort(&p,1,sizeof(palinsesto),ordina_pal);
}
if(scelta == 4)
{
modificadesiderato();
}
if(scelta == 5)
{
cancella_pal();
}
if(scelta ==6)
{
exit(1);
}
if(scelta == 7)
{
cancella_tutto();
}
if(scelta >=8 )
{
system("cls");
}
} //chiusura for
}//chiusura main
//funzioni
/* wpalinsesto: scrivi sul file di testo palinsesto.dat i dati
delle partite
*/
void wpalinsesto()
{
palinsesto p;
FILE *fp;
if(!(fp=fopen("g:/palinsesto.txt","a"))) {
printf("Impossibile scrivere sul file\n");
pausa();
} else {
fflush(stdin);
printf("Inserisci il Programma\n");
scanf("%s", p.programma);
printf("Inserisci la rete\n");
scanf("%s", p.reti);
printf("Inserisci l'ora\n");
scanf("%s",p.ora);
fprintf(fp,"%s\t%s\t%s\n",p.programma, p.reti,p.ora);
printf("Scrittura avvenuta con successo\n");
fclose(fp);
} //chiusura if...else
} //end
/*
rpalinsesto: leggi il file palinsesto.dat
*/
void rpalinsesto()
{
palinsesto p;
FILE *fp;
if(!(fp=fopen("g:/palinsesto.txt","r"))) {
printf("Impossibile leggere il file\n");
pausa();
} else {
while(fscanf(fp,"%s\t%s\t%s\n",p.programma, p.reti,p.ora) > 0) {
printf("Programma > %s\n", p.programma);
printf("Rete > %s\n", p.reti);
printf("Ora > %s\n",p.ora);
}
}
fclose(fp);
}//end
/*
ordina: ordina le partite del palinsesto in base all'ora
*/
int ordina_pal(const void *p1,const void *p2)
{
palinsesto *s1 = (palinsesto *) p1;
palinsesto *s2 = (palinsesto *) p2;
if(s1->ora < s2->ora) {
return 1;
}
return -1;
}
/*
restituiscidesiderato : restituisce il palinsesto desiderato in base al programma
*/
void modificadesiderato()
{
palinsesto p;
FILE *fp;
char prog[MAX];
int pos;
if(!(fp=fopen("g:/palinsesto.txt","r+"))) {
printf("Impossibile proseguire\n");
pausa();
} else {
rewind(fp);
printf("%i\n", pos);
printf("Inserisci il programma che vuoi modificare\n");
scanf("%s",&prog);
while(feof(fp) != 0) {
if(strcmp(prog,p.programma)==0) {
printf("Hai scelto il programma: %s", prog);
printf("\n");
fflush(stdin);
printf("Inserisci il nome del programma\n");
scanf("%s", p.programma);
printf("Inserisci la rete\n");
scanf("%s", p.reti);
printf("Inserisci l'ora\n");
scanf("%s",p.ora);
pos = ftell(fp);
fseek(fp,pos,SEEK_CUR);
if(fprintf(fp,"%s\t%s\t%s\n", p.programma,p.reti,p.ora) > 0) {
printf("Programma modificato\n");
exit(1);
} else {
printf("Programma non modificato");
pausa();
}
} else {
printf("Programma non trovato\n");
pausa();
}
}
}
fclose(fp);
}//end
/*
cancella_pal: cancella palinsesto desiderato
*/
void cancella_pal()
{
palinsesto p;
FILE *fp;
FILE *fp1;
char prog[MAX];
if(!(fp=fopen("g:/palinsesto.txt","r+"))) {
printf("Impossibile accedere al file\n");
pausa();
} else {
printf("Inserisci il programma da cancellare\n");
scanf("%s",&prog);
fseek(fp,1,SEEK_SET);
//se prog è diverso dal programma desiderato
if(strcmp(prog,p.programma) ==0) {
//apri il file temp
fp1 = fopen("g:/temp.txt","w+");
while(!feof(fp)) {
//scrivi sul file temp i programmi
fprintf(fp1,"%s\t%s\t%s\n",p.programma, p.reti,p.ora);
printf("Scrittura avvenuta con successo\n");
break;
}
//chiude i due file
fclose(fp);
fclose(fp1);
//rimuove il palinsesto
remove("g:/palinsesto.txt");
//rinomina il file temp
rename("g:/temp.txt","g:/palinsesto.txt");
remove("g:/temp.txt");
} else {
printf("Programma non trovato\n");
pausa();
}
}
}
/*
pausa: ferma lo schermo finchè non si preme il tasto invio
*/
void pausa()
{
char invio;
printf("Premere INVIO per continuare\n");
invio = getchar();
return;
}
/*
cancella tutto il file
*/
void cancella_tutto()
{
FILE *fp;
fp = fopen("g:/palinsesto.txt","r");
if( remove( "g:/palinsesto.txt" ) != 0 )
perror( "Error deleting file" );
else
puts( "File successfully deleted" );
return;
}
come potrei risolvere questo inconveniente?