fflush(stdin);

1. fflush(stdin);

Carlos Silva Jr
Slack_kf

(usa Slackware)

Enviado em 30/07/2006 - 21:51h

Ola galera alguem poderia me ajudar.
Eu usava o comando

fflush(stdin);

no Windows para limpar o buffer do teclado,mas no linux não está funcionando..
Como eu posso arruma esse programa para rodar no linux corretamente.

#include <stdio.h>

int main()
{
int oper=10;

while(oper != 0 )
{
printf("\nDigite um numero: ");
fflush(stdin);
}
}


Vlw


  


2. Re: fflush(stdin);

Leandro Totino Pereira
tatototino

(usa Slackware)

Enviado em 06/08/2006 - 01:22h

fflush(stdin) é usado para limpar o buffer do teclado!
mas nesse programa nem usa o teclado!

não entendi!


3. Re: fflush(stdin);

Charles
elbrabo

(usa Slackware)

Enviado em 07/08/2006 - 09:17h

#include <stdio.h>

int main()
{
int oper=10;

while(oper != 0 )
{
printf("\nDigite um numero: ");
fflush(stdin);
}
}

Pelo q entendi seu programa pede pra ser digitado um numero ate q ele seja igual a zero, correto?
Mas onde está a leitura do valor para a variavel OPER?

insira a linha --> scanf("%d",&oper); --> apos o printf("\nDigite um numero: ");

Poste ai o resultado....
Valeu?


4. respota

gabriel grillo rosa
gabrielgrace

(usa Slackware)

Enviado em 18/08/2006 - 16:21h

Irmão se quer limpar o buffer do teclado voce pode fazer de dois geitos
OU scanf("%c(%*c)") (sem o parentes so coloquei para facilitar sua visualização)
OU
apos o scanf adicione um getchar()

Resolvido o problema

Espero ter ajudado(comigo resolveu)


5. respota

gabriel grillo rosa
gabrielgrace

(usa Slackware)

Enviado em 18/08/2006 - 16:22h

Irmão se quer limpar o buffer do teclado voce pode fazer de dois geitos
OU scanf("%c(%*c)") (sem o parentes so coloquei para facilitar sua visualização)
OU
apos o scanf adicione um getchar()

Resolvido o problema

Espero ter ajudado(comigo resolveu)


6. ...

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 24/08/2006 - 15:06h

No linux, o comando que realmente limpa o buffer do teclado, sem erros, é o __fpurge() - tem duas underlines antes do nome fpurge.

tipo:
...
__fpurge(stdin); scanf("%d", &numero);
...

Espero ter ajudado,
Slackware_10


7. __fpurge(stdin);

Carlos Silva Jr
Slack_kf

(usa Slackware)

Enviado em 24/08/2006 - 19:02h

Cara você e [*****] me mostrou oq realmente eu prescisava.tinha que ser usuario slackware mesmo..os melhores...

So que Slackware é quase 11.




8. Re: fflush(stdin);

Diego da Silva de Medeiros
diegotosco

(usa Slackware)

Enviado em 06/09/2006 - 11:47h

Eu queria saber porque, algumas veses, é necessário limpar o buffer do teclado. Perguntei ao meu professor e ele não soube responder.

Muito obrigado.


9. Re: fflush(stdin);

Tiago Barcellos Peczenyj
pacman

(usa Ubuntu)

Enviado em 06/09/2006 - 18:50h

agradeça ao scanf ;-)


10. Re: fflush(stdin);

Diego da Silva de Medeiros
diegotosco

(usa Slackware)

Enviado em 06/09/2006 - 22:31h

Obrigado peczenyj, mas acho que tu não me entendeu, o que eu gostaria de saber é porquê, após o uso do scanf() ou qualquer função de entrada de dados pelo teclado, fica sujeira no buffer. Eu notei que algumas vezes é necessário o uso de alguma forma de limpeza do buffer (como o __fpurge indicado pelo colega acima) e outras não. Qual o motivo disso?


11. Re: fflush(stdin);

Felipe Abella
FelipeAbella

(usa Debian)

Enviado em 07/09/2006 - 08:26h

diegotosco, veja um exemplo, o programa quer receber uma string de tamanho 30, nós(na verdade o usuario), inves disso, colocamos 32, o programa nao quer causar estouro de buffer, e só lê 30, esses outros 2 ficam na fila, e quando novamente o programa quiser receber uma string, estes dois caracteres vão ser lidos, oq é errado, já que é outra string que nao tem nada a ver...


12. Re: fflush(stdin);

Diego da Silva de Medeiros
diegotosco

(usa Slackware)

Enviado em 07/09/2006 - 21:11h

Ah então é por isso. Sabe, é bom a gente saber o porquê das coisas. Muito obrigado FelipeDetona.



01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts