Salve a tutti, stamattina ho provato a creare un semplicissimo database che mi permetteva di inserire i dati di un utente su un file di testo. Funzionava tutto perfettamente, così ho pensato di ampliare le funzioni del database inserendo le opzioni Modifica Utente, Elimina Utente e Cerca Utente (che devo ancora capire come si fa), così ho inserito il menu delle opzioni. Il problema è che quando inserisco l'opzione 1 per l'Aggiunta di un Utente (che prima funzionava), mi appare la schermata di aggiunta, ma passa direttamente al secondo valore di input (ovvero il cognome), e non capisco perchè. Qualcuno sa aiutarmi?
Questo è il codice. So che magari per ogni opzioni dovrei creare una funzione a parte, ma ho un pò di difficoltà e quindi ho preferito fare un classico menu con if-else if. Sottolineo che prima di aggiungere il menu, funzionava tutto perfettamente.
codice:#include <stdio.h> #include <stdlib.h> #define userfile "users.txt" typedef struct{ char nome[30]; char cognome[30]; char citta[30]; char provincia[30]; int eta; } user; int main(void){ FILE *fp; user u; int scelta; if(!(fp=fopen(userfile, "a"))){ printf("Errore.\n"); exit(1); } printf("Database.\n\nInserisci il numero relativo all'operazione che vuoi effettuare:\n"); printf("1 - Inserisci Utente\n"); printf("2 - Modifica Utente\n"); printf("3 - Cerca Utente\n"); printf("4 - Elimina Utente\n"); printf("5 - Esci\n"); scanf("%d", &scelta); if (scelta==1){ printf("Inserimento utente nel database.\n\n"); puts("Nome:"); fgets(u.nome, 30, stdin); fflush(stdin); puts("\nCognome:"); fgets(u.cognome, 30, stdin); fflush(stdin); puts("\nCitta':"); fgets(u.citta, 30, stdin); fflush(stdin); puts("\nProvincia:"); fgets(u.provincia, 30, stdin); fflush(stdin); printf("\nEta':\n"); scanf("%d", &u.eta); // Scrivo i dati su file fprintf(fp, "Nome: %sCognome: %sCitta': %sProvincia: %sEta': %d\n\n", u.nome, u.cognome, u.citta, u.provincia, u.eta); printf("\n\nDati inseriti con successo.\n"); fclose(fp); system("cls"); main(); } else if (scelta==5){ return(0); } }


Rispondi quotando