Aprendiendo C, error de bucle

Se me ha encomendado crear un progtwig simple de mayúsculas a minúsculas. Sin embargo, al probar si mi entrada se imprime correctamente, he notado que cada vez que entro en un personaje, siempre vuelve a aparecer incluso cuando no se supone que lo haga.

#include  int main() { char input; //enter a character //set the given input char to variable printf("Enter a character in lower case: \n"); input = getchar(); //Sentinel value is Q while (input != 'Q'){ printf("you entered %c.\n",input); printf("\n"); printf("Enter a character in lower case: \n"); input = getchar(); //gets input from inside the loop } printf("Goodbye \n"); return 0; } 

salida de prueba (ingreso el carácter ‘g’ y presiono enter una vez):

 Enter a character in lower case: g you entered g. Enter a character in lower case: you entered . 

No estoy viendo el problema.

El problema aquí es causado por el carácter de newline introducido en la stdin presionando la tecla ENTRAR . Antes de continuar con la siguiente entrada, debe borrar el búfer de entrada, como agregar

  while (getchar() != '\n'); 

antes de pedir la siguiente entrada.

Dicho esto, getchar() devuelve un int . Un char puede no ser suficiente para mantener el valor de retorno siempre, Cambiar

  char input; 

a

 int input = 0;