elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema con getchar()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema con getchar()  (Leído 9,169 veces)
juanigato

Desconectado Desconectado

Mensajes: 2


Ver Perfil
problema con getchar()
« 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.


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: problema con getchar()
« Respuesta #1 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
  1. #include <stdio.h>
  2. int main()
  3. {
  4.   char continue_o_exit;
  5.   int number;
  6.   char buffer[3]; // En caso de que decidas usar setbuf()
  7.   printf ("Determine un valor a number: ");
  8.   scanf ("%d", &number);
  9.   printf ("Number is %d", number);
  10.    printf ("\n\nSelecciona continue (c) or exit (e): ");
  11.     // setbuf(stdin, NULL);
  12.     while(getchar()!='\n');
  13.     continue_o_exit = getchar();
  14.     if(continue_o_exit == 'c')
  15.      printf ("continue");
  16.   else
  17.      printf ("exit");
  18.   return 0;
  19. }
  20.  

Salida:

Código:
C:\>codes
Determine un valor a number: 67
Number is 67

Selecciona continue (c) or exit (e): e
exit
C:\>


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
juanigato

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: problema con getchar()
« Respuesta #2 en: 13 Abril 2009, 01:42 am »

Gracias por la respuesta Leo!
En línea

EagleOneRaptor

Desconectado Desconectado

Mensajes: 50



Ver Perfil WWW
Re: problema con getchar()
« Respuesta #3 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
  1. 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 Desconectado

Mensajes: 2


Ver Perfil
Re: problema con getchar()
« Respuesta #4 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
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: problema con getchar()
« Respuesta #5 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.

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! ..... !!!!



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Borrar buffer , como funciona getchar
Programación C/C++
Jomad205 2 10,282 Último mensaje 13 Noviembre 2012, 17:23 pm
por Jomad205
Ayuda con getchar:(
Programación C/C++
TopoJunior 5 3,416 Último mensaje 14 Febrero 2013, 20:53 pm
por durasno
Problema con while y getchar.
Programación C/C++
Spinerker 3 2,622 Último mensaje 17 Octubre 2013, 14:18 pm
por Eternal Idol
Problema con el getchar
Programación C/C++
Despondency 1 1,488 Último mensaje 23 Diciembre 2013, 19:50 pm
por leosansan
Problema con la funcion getchar
Programación C/C++
lublanc 1 1,905 Último mensaje 21 Diciembre 2017, 17:17 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines