Salve a tutti! Sono nuovo nel forum e sono ancora agli inizi nella programmazione in C. Avrei bisogno(se potete) del vostro aiuto per risolvere un problema. Io dovrei fare il seguente esercizio con il linguaggio C:
"Un cinecircolo richiede un programma per elaborare le programmazioni televisive di
film. Per ciascun film si vuole tener traccia di titolo, durata, data, ora e canale (intero)
su cui verrà trasmesso e se la trasmissione è già stata effettuata.
Il programma deve permettere l’inserimento di nuovi film e, una volta trasmesso, di
aggiornare questo dato ricercando il film per data oppure per titolo.
Visualizzare inoltre i film che sono già stati trasmessi, quelli che verranno trasmessi in
una certa data (immessa dall’utente), i film in programmazione divisi per canali e i titoli
dei quattro film più lunghi."
Nel mio codice ho utilizzato lo switch e delle strutture( e e poi altre cose) e fermandomi un attimo per controllare se stavo facendo giusto sorge il problema dell' acquisizione del titolo del film. Infatti non riesco ad acquisirlo del tutto poiché essendo composto da spazi es:"Le colline hanno gli occhi" me li interpreta giustamente come caratteri '\0' e mi tronca la stringa. Ho provato ad utilizzare alternative a scanf() come fgets() ma il problema permane comunque. Chiederei il vostro aiuto, se possibile.
Vi posto il codice del mio programma(fino a dove mi sono fermato per controllare):
#include <string.h>
#include <stdio.h>
int main()
{
struct{
char titolo[20],data[20],ora[20],canale[20],trasm[20];
int durata;
}film[100];
int i,n=0,scelta;
printf("\n***Programma di gestione per cinecircolo***\n");
do{
printf("\n1:Inserimento film\n2:Aggiornamento film\n3:Film gia' trasmessi\n4:Film trasmessi in una certa data\n5:Film che verrano trasmessi su un certo canale\n6:I 4 film piu' lunghi\n7:FINE");
printf("\n\nFornisci scelta:\n");
scanf("%d",&scelta);
switch(scelta)
{
case 1:
{
if(n<100)
{
printf("\nFornisci dati\n");
scanf("%s%d%s%s%s",film[n].data,&film[n].durata,film[n].ora,film[n].canale,film[n].trasm);
}
else
printf("\nSpazio esaurito\n");
}
}
}while(scelta!=7);
return(0);
}
Grazie in anticipo!