Salve,
mi scuso in anticipo se la sezione è sbagliata o non indico tutte le info necessarie.
Comunque sono sotto ubuntu e compilo il seguente programma con: gcc -o menu menu.c
il programma funziona, il problema sta nel fatto che quando immetto da tastiera una opzione validacodice:// menu con fgets #include <stdio.h> #define fflush(stdin) while ((getchar()) != '\n') int main(){ printf("'aggiungi' \n"); printf("'cerca' \n"); printf("\n ---------------------------------\n"); printf("'exit' \n"); printf("\nDigita una opzione: "); char agg[]="aggiungi\n"; char cerca[]="cerca\n"; char exit[]="exit\n"; int count=3; //char spazio[]="/n"; char temp[11]; fgets(temp,11,stdin); fflush(stdin); while (count > 1){ if(strcmp(temp,agg)==0) {printf("1\n");return 1;} if(strcmp(temp,cerca)==0){ printf("2\n");return 2;} if(strcmp(temp,exit)==0) {printf ("3\n");return 3;} count--; printf("errore immissione hai a disposizione ancora %d tentativi,digita una opzione:",count); fgets(temp,11,stdin); fflush(stdin); } }
devo premere una ulteriore volta "invio", questo è sicuramente dato da come è stata implementata la "fflush" ma se viene omessa, nel caso in cui digito una stringa troppo grande da tastiera l' stdin rimane sporco e il programma termina (probabilmente per le successiva fgets legge quello che è rimasto nello stdin )
NB
non posso usare la scanf poiché a quanto ho capito è vulnerabile
Vi ringrazio in anticipo, so che può sembrare una cosa stupida da fare ma veramente mi sta creando problemi![]()

Rispondi quotando