guilherme ramalho 0 Posted May 9, 2019 Report Share Posted May 9, 2019 boa noite, alguém me podia explicar o porque de eu usar o comando "fflush (stdin)" neste código ( lembrando que é um código apenas de validação, para garantir que o nome não fica vazio), ou mostrar uma alternativa para não usa-lo? do{ printf("Nome do atleta?"); fflush (stdin); gets(ciclista.nome); }while(ciclista.nome[0]== '\0'); obrigado, aguardo resposta! :D Link to post Share on other sites
thoga31 567 Posted May 13, 2019 Report Share Posted May 13, 2019 O que inseres no teclado é colocado no buffer de input, o qual é "consumido" pelas funções de leitura de dados até serem satisfeitas. Isto tem como consequência a possibilidade de ficarem dados nesse buffer que o gets iria apanhar sem esperar que o utilizador inserisse novos dados. A fim de evitar esse efeito colateral, fazemos a limpeza do buffer antes do gets para que de facto o utilizador tenha a chance de introduzir dados. O fflush(stdin) não é comummente recomendado, sendo uma função deste género uma possível alternativa: void clearbuffer(FILE *f) { char ch; while (ch != EOF && ch != '\n') ch = fgetc(f); } // como usar: clearbuffer(stdin); Da mesma forma, é aconselhável usar o fgets ao invés do gets. Cumprimentos. Knowledge is free! Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now