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;