Programación General > C/C++

 Re: for para rellenar datos de una estructura

(1/2) > >>

AzO-T:
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:
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 --- #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);    getc(stdin);  }  while(getch()=='n');}  
listo, hasta luego...


Juank

AzO-T:
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:
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

AzO-T:
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

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa