Título: problema con getchar() Publicado por: juanigato en 11 Abril 2009, 05:16 am Si utilizo un scanf de un entero y a continuacion un getchar(), este último no funciona. ¿Por qué?
int main() { char continue_o_exit; int number; printf ("Determine un valor a number: "); scanf ("%d", &number); printf ("Number is %d", number); printf ("\n\nSelecciona continue (c) or exit (e): "); continue_o_exit = getchar(); if (continue_o_exit == 'c') printf ("continue"); else printf ("exit"); return 0; } Se que repitiendo continue_o_exit = getchar(); solucione el problema, pero me gustaría saber por qué no funciona de una para aprender. Gracias por su tiempo y ayuda. Título: Re: problema con getchar() Publicado por: leogtz en 11 Abril 2009, 06:22 am Tu codigo me compila bien, pero hay un problema con el buffer de entrada, así funciona bien:
Código
Salida: Código: C:\>codes Determine un valor a number: 67 Number is 67 Selecciona continue (c) or exit (e): e exit C:\> Título: Re: problema con getchar() Publicado por: juanigato en 13 Abril 2009, 01:42 am Gracias por la respuesta Leo!
Título: Re: problema con getchar() Publicado por: EagleOneRaptor en 13 Abril 2009, 02:10 am La función getchar no te funciona, porque no se limpió el retorno de linea (ENTER) usado durante la función scanf, por lo que getchar lee ese retorno de línea, impidiendole esperar a que presiones nada.
La solución ya la dijo Leo Gutierrez, limpiando la entrada con la siguiente instrucción: Código
Un Saludo! Título: Re: problema con getchar() Publicado por: Despondency en 23 Diciembre 2013, 19:11 pm Estaba con el mismo problema... porque la funcion fflush(stdin) no ayuda?? :/ u.u mi codigo es
#import <stdio.h> main(){ float medida; char resp; do{ printf("Ingresa una medida en centimetros\n"); scanf("%f", &medida); printf("La medida dada en pulgadas es: %f\n",medida*2.54); fflush(stdin); printf("Calculamos otra medida? (s = si, n = no)"); putchar('\n'); resp = getchar(); resp = getchar(); } while(resp== 's' || resp == 'S'); } y bueno alli puse dos veces el getchar para que jalara xD Título: Re: problema con getchar() Publicado por: leosansan en 23 Diciembre 2013, 19:47 pm Estaba con el mismo problema... porque la funcion fflush(stdin) no ayuda?? ........................ y bueno alli puse dos veces el getchar para que jalara xD Respecto a la funcion fflush(stdin) leete Lo que no hay que hacer en C/C++. Nivel basico (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html). Y respecto al uso de los dos getchar ya en un post anterior te pusieron la respuesta: La función getchar no te funciona, porque no se limpió el retorno de linea (ENTER) usado durante la función scanf, por lo que getchar lee ese retorno de línea, impidiendole esperar a que presiones nada. Es decir, un getchar lee el retorno del scanf y el otro la variable "resp". Felices Navidades y Próspero Año Nuevo. Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) |