Autor
|
Tema: problema con getchar() (Leído 9,475 veces)
|
juanigato
Desconectado
Mensajes: 2
|
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.
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Tu codigo me compila bien, pero hay un problema con el buffer de entrada, así funciona bien: #include <stdio.h> int main() { char continue_o_exit; int number; char buffer[3]; // En caso de que decidas usar setbuf() printf ("Determine un valor a number: "); printf ("Number is %d", number ); printf ("\n\nSelecciona continue (c) or exit (e): "); // setbuf(stdin, NULL); if(continue_o_exit == 'c') else return 0; }
Salida: C:\>codes Determine un valor a number: 67 Number is 67
Selecciona continue (c) or exit (e): e exit C:\>
|
|
|
En línea
|
|
|
|
juanigato
Desconectado
Mensajes: 2
|
Gracias por la respuesta Leo!
|
|
|
En línea
|
|
|
|
EagleOneRaptor
|
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: while(getchar()!='\n')
Un Saludo!
|
|
|
En línea
|
Divida sus archivos con facilidad usando File Breaker "Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre." Dr. Johnson.
|
|
|
Despondency
Desconectado
Mensajes: 2
|
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
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
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.
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".Saluditos! ..... !!!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Borrar buffer , como funciona getchar
Programación C/C++
|
Jomad205
|
2
|
10,595
|
13 Noviembre 2012, 17:23 pm
por Jomad205
|
|
|
Ayuda con getchar:(
Programación C/C++
|
TopoJunior
|
5
|
3,678
|
14 Febrero 2013, 20:53 pm
por durasno
|
|
|
Problema con while y getchar.
Programación C/C++
|
Spinerker
|
3
|
2,817
|
17 Octubre 2013, 14:18 pm
por Eternal Idol
|
|
|
Problema con el getchar
Programación C/C++
|
Despondency
|
1
|
1,653
|
23 Diciembre 2013, 19:50 pm
por leosansan
|
|
|
Problema con la funcion getchar
Programación C/C++
|
lublanc
|
1
|
2,083
|
21 Diciembre 2017, 17:17 pm
por MAFUS
|
|