SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: medieval en Jueves 18 de Octubre de 2007, 06:57

Título: Gets Vs Scanf
Publicado por: medieval en Jueves 18 de Octubre de 2007, 06:57
Tengo una consulta sobre el siguiente codigo:

Código: Text
  1.  
  2. #include<stdio.h>
  3. #include<conio.h>
  4. #include<stdlib.h>
  5. #include<string.h>
  6. #define TAM 5
  7.  
  8.  
  9. typedef struct Tipo_Cliente{
  10.     char nombre[50];
  11.     char cuit[11];
  12.     char cp[11];
  13. };
  14.  
  15. int alta_opc()
  16. {
  17.  
  18.     int opc;
  19.     printf("ALTAS:\n------\n");
  20.     printf("1-Cliente\n");
  21.     printf("2-Articulo\n");
  22.     printf("3-Compra\n");
  23.     printf("4-Salir\n>");
  24.     scanf("%d",&opc);
  25.  
  26.     return opc;
  27. }
  28.  
  29.  
  30.  
  31. int main()
  32. {
  33.  
  34.     int cant_cli=0,cant_art=0,cant_com=0,aux;
  35.     aux=TAM; /*TAM es un define*/
  36.  
  37.     char cadena[20];
  38.    
  39.     Tipo_Cliente* clientes;
  40.    
  41.     int opc=alta_opc();
  42.     gets(cadena);   <--------------------- en este punto no me toma la funcion gets
  43.  
  44.  
  45.  
  46.  
  47.  
  48.                         printf ("ALTA DE CLIENTE\n");
  49.                         cant_cli++;
  50.                         clientes=(Tipo_Cliente*)malloc(sizeof(Tipo_Cliente)*aux);
  51.                         if (cant_cli==aux)
  52.                         {
  53.                             aux+=5;
  54.                              clientes=(Tipo_Cliente*)realloc(clientes,sizeof(Tipo_Cliente)*aux);
  55.                         }
  56.     return 0;
  57. }
  58.  


El problema es que luego de llamar a la funcion alta_opc, no me toma el gets, sin llamar a la funcion si funciona, y poniendo scanf tambien!

En que estoy fallando?? muchas gracias.
Título: Re: Gets Vs Scanf
Publicado por: Mollense en Jueves 18 de Octubre de 2007, 14:45
Hola medieval.

Probá así:
Código: Text
  1. flushall();
  2. gets(cadena);
  3.  
Título: Re: Gets Vs Scanf
Publicado por: medieval en Jueves 18 de Octubre de 2007, 16:45
Probe con
Código: Text
  1. flushall();
  2.  

y también con

Código: Text
  1. fflush(stdin);
  2.  

y todo salio OK!

pensaba que el problema del buffer estaba
asociado con scanf y el %s solamente,
muchas gracias por la ayuda!
Título: Re: Gets Vs Scanf
Publicado por: Mollense en Jueves 18 de Octubre de 2007, 17:24
Cita de: "medieval"
Probe con
Código: Text
  1. flushall();
  2.  

y también con

Código: Text
  1. fflush(stdin);
  2.  

y todo salio OK!

pensaba que el problema del buffer estaba
asociado con scanf y el %s solamente,
muchas gracias por la ayuda!
No hay por que :beer: