SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: AzO-T en Viernes 13 de Junio de 2003, 13:17

Título: Re: for para rellenar datos de una estructura
Publicado por: AzO-T en Viernes 13 de Junio de 2003, 13:17
hola, creo que tengo un pequeño problema he creado una estructura y al intentar asignarle valores a las variables con un ciclo for el pimer ciclo lo hace pero luego se queda pillado , si alguien me pudiera ayudar.
#include <stdio.h>
#include <conio.h>
void main(void)
{
struct temperaturas
   {
   char nom_pais[20];
   int temp_max;
   int temp_min;
   }paises[25];
int c;
for (c=0;c<=24;c++)
   {
   printf("introduzca pais: n");
   gets (paises[c].nom_pais);
   printf("introduzca temp max: n");
   scanf("%d",paises[c].temp_max);
   printf("introduzca temp min: n");
   scanf("%d",paises[c].temp_min);
   }
while(getch()=='n');
}
Título: Re: for para rellenar datos de una estructura
Publicado por: JuanK en Viernes 13 de Junio de 2003, 14:29
lo que pasa es que la funcion gets, te captura toda la cade con exepcion del enter, entonces este queda atrapado en el buffer de la entrada standart..
entonces lo que hay que hacer es capturar esa entrada del buffer..asi:

getc(stdin);

stdin es un apuntador a la entrada estandart.
te queda asi:
 
Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <conio.h>
  4. void main(void)
  5. {
  6.   struct temperaturas
  7.   {
  8.     char nom_pais[20];
  9.     int temp_max;
  10.     int temp_min;
  11.   }paises[25];
  12.   int c;
  13.   for (c=0;c<=24;c++)
  14.   {
  15.     printf("introduzca pais: n");
  16.     gets (paises[c].nom_pais);
  17.     printf("introduzca temp max: n");
  18.     scanf("%d",paises[c].temp_max);
  19.     printf("introduzca temp min: n");
  20.     scanf("%d",paises[c].temp_min);
  21.     getc(stdin);
  22.   }
  23.   while(getch()=='n');
  24. }
  25.  
  26.  

listo, hasta luego...


Juank
Título: Re: for para rellenar datos de una estructura
Publicado por: AzO-T en Viernes 13 de Junio de 2003, 14:37
no juank puse lo que me posteaste de getc(stdin); y nada  me pasa lo mismo.
por ejmeplo:

introduzca pais:
españa
introduzca temperatura maxima:
89
y aqui se me queda pillado
Título: Re: for para rellenar datos de una estructura
Publicado por: JuanK en Viernes 13 de Junio de 2003, 15:58
Funciona, lo probe en mi equipo,

recompilaste antes de probar???

otra opcion puede ser con getche(), fflush(stdin),..pero se me hace muy raro que no te haya funcionado, la verdad creo que no recompliaste.

Juank
Título: Re: for para rellenar datos de una estructura
Publicado por: AzO-T en Viernes 13 de Junio de 2003, 16:43
que va si cada vez que me pasa eso tengo que cerra y abrir otra vez el compilador tal vez se problema de mi compilador mira me da este error
thread stopped
c:bc5binejercicio1.exe: fault:
acces violation at 0x4050f9: read of
adress 0xffffffff
Título: for para rellenar datos de una estructura
Publicado por: JuanK en Viernes 13 de Junio de 2003, 17:34
enviame el codigo y lo revisamos..parece que tienes un problema con los datos de una cadena.

juank