como fazer o scanf nao ler o enter junto com o caracter?

como fazer o scanf nao ler o enter junto com o caracter?

por Lucas Rodrigues -
Número de respostas: 2

quando o usuario da enter apos digitar o caracter, o scanf le o caracter e o enter junto, o que da um pequeno problema no meu ep: quando um digito invalido é diggitado, o programa da um erro "comando desconhecido". como o scanf le o enter junto com o caracter, o ep roda a funcao escolohida e depois aparece um "comando desconhecido" do enter.

ja tentei colocar um getchar() depois do scanf para ele "pegar esse ENTER pra ele", mas dai quando o usuario só pressiona o ENTER da um bug chato.

alguem tem alguma sugestao? eu ja tentei quase de tudo...

Em resposta à Lucas Rodrigues

Re: como fazer o scanf nao ler o enter junto com o caracter?

por Gabriel R. C. Peixoto -
Não tenho certeza se eu entedi direito o que tá acontecendo... mas eu fazendo assim pra evitar os problemas de ler ENTER...
do{
scanf("%c", &opcao);
} while(opcao == '\n');

Eu uso esse código na hora de ler a opcao do usuario mesmo... e aqui acho q ta funcionando bem, ve se da certo aí.
Em resposta à Lucas Rodrigues

Re: como fazer o scanf nao ler o enter junto com o caracter?

por Marco Dimas Gubitoso -
Não sei se entendi sua pergunta, mas se vc quer retirar todo o espaço em branco que vem depois da leitura de uma variável, basta incluir um espaço no formato:

if (scanf("%c ", &op)!= 1) blablabla;

aliás, vc pode usar o espaço em qualquer lugar do formato, ele sempre consumirá qualquer sequência de espaços, tabs ou enters da entrada