Nella struct devo salvare per forza un enum ho provato ad usare la funzione strcmp nella funzione leggi dati e uno switch case nella funzione stampa dati per convertire da inglese ad italiano ma qualcosa non va anche se il compilatore non segnala errori...
#include<stdio.h>
#include<string.h>
#define NSERIE 10
typedef enum{monday,tuesday,wednesday,thursday,friday,saturday,sunday}tipogiorno;
struct strcentralina{char centr[6];
float temperatura;
float umidita;
float polveri_sottili;
int giorno;
int mese;
int anno;
tipogiorno giornosettimana;};
typedef struct strcentralina centralina;
void leggidati(centralina *dati)
{ tipogiorno gdg;
char stringa1[15];
printf("inserire dati rilevazione ovvero giorno della settimana,centralina,umidita',temperatura,polveri e data:\n");
scanf("%s",);
scanf("%s %f %f %f %d %d %d ",&(dati->centr),&(dati->umidita),&(dati->temperatura),&(dati->polveri_sottili),&(dati->giorno),&(dati->mese),&(dati->anno));
if (strcmp(stringa1,"monday"))
gdg=monday;
else if(strcmp(stringa1,"tuesday"))
gdg=tuesday;
else if(strcmp(stringa1,"wednesday"))
gdg=wednesday;
else if(strcmp(stringa1,"thursday"))
gdg=thursday;
else if(strcmp(stringa1,"friday"))
gdg=friday;
else if(strcmp(stringa1,"saturday"))
gdg=saturday;
else if(strcmp(stringa1,"monday"))
gdg=monday;
}
void stampadati(centralina *dati)
{ tipogiorno giornosettimana=monday;
printf("la data della rilevazione e':%d %d %d %d\n",dati->giornosettimana,dati->giorno,dati->mese,dati->anno);
switch(giornosettimana)
{
case monday: printf("lunedi'",dati->giornosettimana);break;
case tuesday: printf("martedi'",dati->giornosettimana);break;
case wednesday: printf("mercoledi'",dati->giornosettimana);break;
case thursday: printf("giovedi'",dati->giornosettimana);break;
case friday: printf("venerdi'",dati->giornosettimana);break;
case saturday: printf("sabato",dati->giornosettimana);break;
case sunday:printf("domenica",dati->giornosettimana);break;
}
printf("la centralina e': %s\n",dati->centr);
printf("umidita' e temperatura valgono %f e %f C\n",dati->umidita,dati->temperatura);
printf("concentrazione polveri sottili: %f ug/m3\n",dati->polveri_sottili);
}
int main (int argc, char** argv)
{ int i;
centralina centr1[NSERIE];
for(i=0;i<NSERIE;i++){
leggidati(¢r1[i]);}
for(i=0;i<NSERIE;i++){
stampadati(¢r1[i]);}
return 0;
}
secondo me il problema sta nel legare la stringa con l'enum ma non so come fare, dovrei fare una specie di casting?