Non capisco a che scopo fai tutto ciò.

Le enum le dichiari e poi le usi con l'operator di scope resolution (:: quindi, a parte che in questo caso non servono proprio a nulla, le devi usare così

codice:
typedef enum {Domenica, Lunedi, Martedi, Mercoledi } Giorni;

Giorni::Domenica
Cioè tu fai inserire un numero da scanf e per inserirle in variabili int usi gli enum ?
Una cosa inutile.

Avrebbe avuto senso se avessi fatto inserire dei numeri, e poi avessi messo nella struttura non int ma enum, così:

codice:
struct data {
 Giorni g;
};
In questo caso la conversione da int a enum è automatica, puoi assegnare direttamente l'int a g, solo che devi ricordarti che gli enum partono da zero, quindi se un utente ha inserito 1 per intendere lunedi e Lunedi è in 1^ posizione nell'enum, Lunedì nell'enum varrà 0 non 1.