Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Limpando o buffer do teclado em C
Linux user
Publicado por Emilio Santiago em 21/12/2003

Login: emilio2hd, 29613 pontos
[ Hits: 15881 ]

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:

#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!


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Gerando números aleatórios em C
   Dica Linux recomendada Classes para vários tipos (templates)
   Dica Linux recomendada Recursão em C
   Dica Linux recomendada Desenvolvimento com C/C++ e GTK
   Dica Linux recomendada Instalação do editor xwpe - Debian

Comentários
[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

[3] Comentário enviado por marcelhb em 04/11/2005 - 22:05h:

Que vergonha gente.. fflush(stdin) é errado, fflush é pra limpar na saída de algo... Leiam sobre isso aqui, e vejam porque fflush(stdin) é errado ;)
http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1052863818&id=1043284351
Abraços

[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


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.