• Domingo 15 de Diciembre de 2024, 17:34

Autor Tema:  Gets Vs Scanf  (Leído 1125 veces)

medieval

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Gets Vs Scanf
« en: Jueves 18 de Octubre de 2007, 06:57 »
0
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.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Gets Vs Scanf
« Respuesta #1 en: Jueves 18 de Octubre de 2007, 14:45 »
0
Hola medieval.

Probá así:
Código: Text
  1. flushall();
  2. gets(cadena);
  3.  
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

medieval

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Gets Vs Scanf
« Respuesta #2 en: Jueves 18 de Octubre de 2007, 16:45 »
0
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!

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Gets Vs Scanf
« Respuesta #3 en: Jueves 18 de Octubre de 2007, 17:24 »
0
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:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.