Luiz Beginner 0 Denunciar post Postado Janeiro 19, 2018 Olá pessoal qual a melhor maneira de limpar o buffer do teclado ?, estava vendo no site do C progressivo onde era usada o fflush(stdin) no windows e __fpurge(stdin) no linux mais toda vez que executo um programa com __fpurge(stdin) da erro no linux pesquisando encontrei o setbuf(stdin, NULL) só que toda vez que uso acaba com dois enters. Sei que não fui muito claro se alguém puder ajudar agradeço :-). Compartilhar este post Link para o post Compartilhar em outros sites
Nefisto 0 Denunciar post Postado Janeiro 20, 2018 Ola @Luiz Beginner, eu costumo usa de duas maneiras: 1) Usando um define, essa maneira foi um professor (mto bom) da faculdade que me passou #define CLEAN_BUFF do{ int c; while((c = getchar()) != '\n' && c != EOF);}while(0) 2) Usando o "%*c" depois de alguma linha que você tiver dado entrada de 1 byte, se nao me engana essa eu vi em um livro da deitel (acho) #include <stdio.h> int main() { char i1 = 0; char i2 = 0; scanf ("%c%*c", &i1); scanf ("%c%*c", &i2); printf("%c\t%c\n", i1, i2); return (0); } Espero ter ajudado Compartilhar este post Link para o post Compartilhar em outros sites
Luiz Beginner 0 Denunciar post Postado Janeiro 20, 2018 Obrigado, @Nefisto deu certo aqui valeu. Também li que também pode dar um espaço entre as áspas dupas e simbolo do %c e também usar o getchar(), fgetc(stdin); e getc(stdin); nãosei se você viu. Ex: " %c". Sou iniciante e estou estudando por conta própria. Compartilhar este post Link para o post Compartilhar em outros sites
Nefisto 0 Denunciar post Postado Janeiro 21, 2018 Opa @Luiz Beginner, então mano, o do espaço eu conhecia mas nunca fui atras pra intende o pq, dos outros eu so nao conhecia o fgetc passando o stdin como parametro, é q como aqueles dois sempre resolveram, acabei n indo atras de outros. Boa sorte aew nos seus estudos mano, e se precisa de alguma mão mais urgente e quise me manda um email, se eu soube eu te ajudo com oq der Compartilhar este post Link para o post Compartilhar em outros sites
Luiz Beginner 0 Denunciar post Postado Janeiro 23, 2018 Valeu @Nefisto . Desculpa, mais vou precisar de outra ajuda sua. Na verdade não tive problemas só quero saber se dessa forma está realmente certo. Impressão de duas variáveis do tipo char tive esse problema mais com que sabia consegui resolver. Compartilhar este post Link para o post Compartilhar em outros sites
Nefisto 0 Denunciar post Postado Janeiro 23, 2018 @Luiz Beginner, então, eu n gosto mto do espaco bem por essa razao, apesar de ta funcionando, no seu buffer fico um '\n', se você cria um a3 e da um scanf bem embaixo o '\n' vai fica nele, é facil de esquece do espaco, sempre que eu mecho com char costumo usa aquilo q eu flei la em cima, só toma cuidado q esses erros em programas maiores sao um saco pra encontra. Compartilhar este post Link para o post Compartilhar em outros sites
Luiz Beginner 0 Denunciar post Postado Janeiro 23, 2018 Obrigado pelas dicas @Nefisto. Consegui, meu erro foi que estava usando o %*c depois do %c e não antes, também percebi que "%*c" == " %c". Compartilhar este post Link para o post Compartilhar em outros sites