paulo1205
(usa Ubuntu)
Enviado em 14/09/2015 - 18:41h
GSS escreveu:
GSS escreveu:
Cara usa o setbuf pra deixar o buffer do teclado limpo, por enter ou espaço são um caracter.
Exemplo setbuf:
setbuf(stdin, NULL);
Valeu!
Use isso se quando estiver apertando enter no primeiro numero ele já pula pro igual
Ele está programando num Arduino, não num PC. Se já é difícil ter uma implementação de
scanf(), imagino que mais difícil ainda será uma de
setbuf() que faça sentido.
De todo modo, essa sugestão é insuficiente mesmo num PC, pois se a entrada estiver ligada a um terminal, o próprio driver do terminal pode ter seus buffers, sobre o qual função
setvbuf() não interfere (lembrando que
setbuf() é só um caso particular de
setvbuf()).
Quando chegar a casa, posto aqui um programa que fiz que abre um terminal virtual e envia pelo lado
master uma quantidade ilimitada de caracteres para consumo de um processo que lê apenas um caráter no lado
slave. Para um processo com o terminal em modo canônico (normal no uso interativo), o resultado na minha máquina foi que o processo leitor simplesmente nunca consome nenhum dos caracteres emitidos, e consequentemente também o emissor nunca termina (provavelmente os caracteres excedentes começam a ser descartados).