Salve ragazzi, allego il programma che sto progettando: è una sorta di palinsesto TV (banale)
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];
float ora;
} palinsesto;
//funzioni
void wpalinsesto();
void rpalinsesto();
void ordina_pal();
void cancella_pal();
void restituiscidesiderato();
void pausa();
//main()
main() {
int scelta;
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 Leggi Palinsesto desiderato\n");
printf("5 Cancella Palinsesto desidetato\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)
{
ordina_pal();
}
if(scelta == 4)
{
restituiscidesiderato();
}
if(scelta == 5)
{
cancella_pal();
}
if(scelta ==6)
{
exit(1);
}
if(scelta >=7 )
{
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("palinsesto.txt","ab"))) {
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("%f",&p.ora);
fwrite(&p,sizeof(palinsesto),1,fp);
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("palinsesto.txt","rb"))) {
printf("Impossibile leggere il file\n");
pausa();
} else {
while(fread(&p,sizeof(palinsesto),1,fp) > 0) {
printf("Programma > %s\n", p.programma);
printf("Rete > %s\n", p.reti);
printf("Ora > %f\n",p.ora);
}
}
fclose(fp);
}//end
/*
ordina: ordina le partite del palinsesto in base all'ora
*/
void ordina_pal()
{
}
/*
restituiscidesiderato : restituisce il palinsesto desiderato in base al programma
*/
void restituiscidesiderato()
{
palinsesto p;
FILE *fp;
char prog[MAX];
if(!(fp=fopen("palinsesto.txt","ab"))) {
printf("Impossibile proseguire\n");
pausa();
} else {
printf("Inserisci il programma che vuoi modificare\n");
scanf("%s",&prog);
while(fread(&p,sizeof(palinsesto),1,fp)){
if(strcmp(prog,p.programma)==0) {
printf("Hai scelto il programma: %s", prog);
printf("\n");
printf("Inserisci il nuovo nome\n");
fflush(stdin);
scanf("%s", p.programma);
printf("Inserisci la rete\n");
scanf("%s", p.reti);
printf("Inserisci l'ora\n");
scanf("%d",&p.ora);
fwrite(&p,sizeof(palinsesto),1,fp);
printf("Programma modificato\n");
} 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("palinsesto.txt","rb"))) {
printf("Impossibile accedere al file\n");
pausa();
} else {
printf("Inserisci il programma da cancellare\n");
scanf("%s",&prog);
fp1 = fopen("temp.dat","wb");
while(fread(&p,sizeof(palinsesto),1,fp) != 0) {
while(strcmp(prog,p.programma) != 0) {
fwrite(&p,sizeof(palinsesto),1,fp1);
fclose(fp);
fclose(fp1);
rename("temp.dat","palinsesto.dat");
printf("Scrittura avvenuta con successo\n");
}
}
}
}
/*
pausa: ferma lo schermo finchè non si preme il tasto invio
*/
void pausa()
{
char invio;
printf("Premere INVIO per continuare\n");
invio = getchar();
return;
}
Un'altra cosa: la funzione ordina() come dovrei scriverla? Se la faccio con i puntatori dovrei inserire anche una lista...
Attendo una risposta...nel frattempo vi ringrazio anticipatamente