Pular para o conteúdo

Limpando o buffer do teclado em C

Dica publicada em C/C++ / Introdução
Emilio Santiago emilio2hd
Hits: 39.400 Categoria: C/C++ Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Limpando o buffer do teclado em C

Eu não sei quanto à vocês, mas comigo já aconteceu muitas vezes de fazer um programa para ler um caracter ou uma string, aí quando chegava no local de ler a string ou o caracter passava direto sem ler a string ou o caracter.

Pois bem, quando isso acontece é porque o buffer do teclado contém sujeira e é bom da uma limpada. Para isso vamos usar:

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
#include<stdio_ext.h>

main()
{
   __fpurge(stdin);
   /* ...
   restante do programa */

}

É bom você usar esse comando antes de ler qualquer coisa.

Detalhe: declarando stdio_ext.h não precisa declarar stdio.h. E só funciona no Linux.

Espero que essa dica ajude em alguma coisa.

Falow!

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Apostila de ncurses bem completa

Melhor Controle de Memória de Strings em C

Desenvolvimento com C/C++ e GTK

Pesquisar número num vector em C

Programação para Arduino

Compilando no Code::Blocks

#1 Comentário enviado por coyote em 26/05/2004 - 14:46h
Uma outra opção eh utilizar o fflush(stdin)
que tambem pode ser utilizado para atualizar a tela durante um loop , fflush(stdout).
esta contido em stdio.h e funciona tanto no linux como no windows

Cassio
#2 Comentário enviado por pandegas em 14/02/2005 - 18:03h
Costumava usar fflush tb, mas valew pela dica
#4 Comentário enviado por jochan em 14/12/2005 - 14:46h
Muito legal, vai me ajudar bastente no meu projeto de C++ ... =)
#5 Comentário enviado por ihtraum em 03/04/2006 - 20:52h
não é aconselhável usar essa biblioteca.
visto que ela não é portátil. só funciona no linux.
devem existir outras alternativas.
ou melhor, existem, vejam essa de nosso amigo rogério:

http://www.vivaolinux.com.br/dicas/verDica.php?codigo=368

uma boa alternativa.
#6 Comentário enviado por f_Candido em 24/09/2007 - 21:07h
Muito Boa. Apesar de funcionar apenas no Linux, ajuda bastante, pra quem está migrando.
Abraços
#7 Comentário enviado por p@b10 em 27/09/2007 - 15:54h
Eu leio assim

scanf("%c%*c", &Nome_da_variavel);

o "%*c" é como se o scanf esperasse algo para ler e jogar no lixo ^^, (como o enter por exemplo)

espero ter ajudado!!!

Abraços
#8 Comentário enviado por mlegidio em 24/10/2007 - 00:58h
acabei de aprender uma bem legal...
scanf(" %c", &vari);
notem q tem um espaço entre as aspas e o percent.
vi essa dica aki no VOL.
#9 Comentário enviado por mecsys em 13/01/2011 - 19:07h
Boa dica, me ajudou muito. Estava tentando usar fflush(stdin), mas não estava adiantando.

Valeu!

Contribuir com comentário

Entre na sua conta para comentar.