• Viernes 8 de Noviembre de 2024, 20:11

Autor Tema:  [Solucionado]Problemas con el buffer de entrada  (Leído 1127 veces)

lambda

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
[Solucionado]Problemas con el buffer de entrada
« en: Sábado 8 de Enero de 2011, 00:51 »
0
Hola que tal a todos mi problema es el siguiente: No puedo limpiar el buffer de entrada y debido a esto mi programa se salta una instrucción en la función "pedidos" .
Código: C
  1.  
  2.  
  3. #include <stdio.h>
  4. #include <ncurses.h>
  5. typedef struct vx {char calle[30];char tipo_cantidad[15];int cantidad;}vx;
  6. void importe_venta (void);
  7. void pedidos (void);
  8. int main(void)
  9. {
  10.    
  11.     printf("Elija una opcion : ");
  12.     printf("a) Venta t");
  13.     printf("b) Pedido t");
  14.     char opc;
  15.     scanf("%c",&opc);
  16.     //while(getchar()!='n');
  17.     switch (opc)
  18.     {
  19.         case 'a':
  20.              importe_venta();
  21.              break;
  22.         case 'b':
  23.            
  24.             pedidos();
  25.             break;
  26.     }
  27.     return 0;
  28. }
  29. void importe_venta(void)
  30. {
  31.     int cantidad=0;
  32.     int precio=0;
  33.     printf("Cantidad >>>  ");
  34.     scanf("%d",&cantidad);
  35.     printf("Precio >>>  ");
  36.     scanf("%d",&precio);
  37.     int l=cantidad*precio;
  38.     printf("Importe >>> %d ",l);
  39.    
  40. }
  41. void pedidos(void)
  42. {
  43.    
  44.     vx pedido;
  45.     //while(getchar()!='n');
  46.     printf("Domicilio >>> ");
  47.         scanf("%30[^n],pedido.calle);
  48.     printf("%sn",pedido.calle);
  49.     printf("Cantidad total >>> ");
  50.     scanf("%d",&pedido.cantidad);
  51.     //print("%dn",pedido.cantidad);
  52.     printf("Cantidad de cada tipo >>> ");
  53.     scanf("%30[^n]",pedido.tipo_cantidad);
  54.     printf("%sn",pedido.tipo_cantidad);
  55.  
  56. }
  57.  
  58.  
  59.  
  60.  

Sucede que cuando elijo la opción "b" que es para acceder a la función "pedidos" se salta el scanf que pide el domicilio,ya he probado con fflush y no me ha funcionado.

Espero que me puedan ayudar, gracias.
« última modificación: Lunes 10 de Enero de 2011, 04:07 por lambda »

LapizTolita

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Problemas con el buffer de entrada
« Respuesta #1 en: Sábado 8 de Enero de 2011, 13:21 »
0
foros.solocodigo.com/viewtopic.php?f=18&t=43072
Ahí explica porque no usar fflush con stdin.
El único error que vi es este :
47         scanf("%30[^n],pedido.calle);