Problema con la lettura di una stringa da input

di il
1 risposte

Problema con la lettura di una stringa da input

Ciao a tutti..ho un piccolo problema con questo mio programmino..ovvero riesco a fargli inserire tutti i campi ma quando arrivo a chiedergli di inserire una stringa non lo fa. In particolar modo con tutti i metodi che ho provato il programma salta proprio il momento in cui dovrei inserire la stringa
Questo è il codice:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct data{
int giorno;
int anno;
char mese[10];
char ora[10];
char nota[30];
};

void inserisciData(struct data*);

int main()
{
int i;
struct data domani;

printf("Avvio del programma\n");
inserisciData(&domani);

printf("Il giorno e': %d\n",domani.giorno);
printf("Il mese e': %s\n",domani.mese);
printf("L'anno e': %d\n",domani.anno);
printf("L'ora e': %s\n",domani.ora);
printf("La nota insrita e': %s\n",domani.nota);


return 0;
}

void inserisciData(struct data* oggi){

int day, month, year; // giorno anno mese
int hour, minute;
int x = 0; // variabile che uso per controllare se la data inserita è corretta o meno. settata a 0 non lo è settata a 1 si
int y = 0; //uguale a sopra solo per l'ora
char orario[10];
char notadainserire[30];

char* nomemese[]={"Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"};
do{
printf("Inserisci un giorno: \n");
scanf("%d",&day);
printf("Inserisci un mese: \n");
scanf("%d",&month);
printf("Inserisci un anno: \n");
scanf("%d",&year);

}
else if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){
if(day>0 && day<=31){
x=1;
}
}
else if(month==4 || month==6 || month==9 || month==11){
if(day>0 && day<=30){
x=1;
}
}
else if(month==2){
if(day>0 && day<29){
x=1;
}
}
else
printf("Hai digitato un numero di giorni che non corrsiponde al mese che hai inserito\n");
if(x==0){
printf("Ripeti l'inserimento della data\n");
}

}while(x==0);

do{
printf("Inserisci l'ora dell'appuntamento e poi alla prossima richiesta i minuti (hh): \n");
scanf("%d", &hour);
printf("Inserisci i minuti (mm): \n");
scanf("%d", &minute);
if(hour>=0 && hour<=23){
if(minute>=0 && minute<=59){
y=1;
}
}

}while(y==0);
sprintf(orario, "%d:%d", hour, minute);
oggi->giorno=day;
strcpy(oggi->mese,nomemese[month-1]); /*-1 perchè l'array parte da 0*/
oggi->anno=year;
strcpy(oggi->ora,orario);
printf("Inserisci la nota max 30 caratteri\n");
//ho utilizzato più metodi ma nessuno funziona
/*il primo e'
for(i=0; (notadainserire[i]=getchar())!='\n'; i++);
      ;
notadainserire[i]='\0';
*/
/*il secondo è
scanf("%[^\n]", notadainserire);
*/
/*il terzo
gets(notadainserire)
*/
/*poi tramite strcpy(oggi->nota,notadainserire)
dovrei copiarla in nota così che poi venga copiata nella struct domani del main dopo tramite il return
*/
printf("Il giorno e': %d\n",oggi->giorno);
printf("Il mese e': %s\n",oggi->mese);
printf("L'anno e': %d\n",oggi->anno);
printf("L'ora e' %s\n",oggi->ora);
/*e con 
printf("La nota e' %s\n", oggi->nota); 
dovrei stamparla e poi
*/
return ;
}
QUalcuno ha qualche consiglio?

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte