• Viernes 15 de Noviembre de 2024, 10:26

Autor Tema:  Re: for para rellenar datos de una estructura  (Leído 1429 veces)

AzO-T

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: for para rellenar datos de una estructura
« en: Viernes 13 de Junio de 2003, 13:17 »
0
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');
}

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: for para rellenar datos de una estructura
« Respuesta #1 en: Viernes 13 de Junio de 2003, 14:29 »
0
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
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

AzO-T

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: for para rellenar datos de una estructura
« Respuesta #2 en: Viernes 13 de Junio de 2003, 14:37 »
0
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

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: for para rellenar datos de una estructura
« Respuesta #3 en: Viernes 13 de Junio de 2003, 15:58 »
0
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
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

AzO-T

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: for para rellenar datos de una estructura
« Respuesta #4 en: Viernes 13 de Junio de 2003, 16:43 »
0
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

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
for para rellenar datos de una estructura
« Respuesta #5 en: Viernes 13 de Junio de 2003, 17:34 »
0
enviame el codigo y lo revisamos..parece que tienes un problema con los datos de una cadena.

juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io