Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/07/2010, 23:57
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Ayuda no se que pasa

Hola,

Cita:
Iniciado por Er_Nuke Ver Mensaje
... no me toma el primer ingreso de datos y se salta al segundo, ...
El archivo stdin es un buffer de caracteres, donde se almacena todo lo que se recibe por el teclado, pero las instrucciones deben leer de ese buffer consecutivamente, incluyendo el retorno de carro (13) o nueva línea (10).

Código:
scanf ("%d", &seleccion);
Al procesar la instrucción scanf solamente estas sacando de dicho buffer el número, pero el retorno de carro o la nueva línea todavía está en el buffer. Por lo tanto tienes que quitar ese retorno de carro antes que llegue al primer fgets, de otra forma este último recibe el retorno de carro (enter, intro) inmediatamente, como que lo hubieras presionado en el teclado.

Podrías eliminarlo leyendo desde el scanf
Código:
        char c;
        scanf ("%d%c", &seleccion, &c);
        printf ("%d\n", c); // 13 en Win - 10 en Unix
O podrías eliminarlo después
Código:
        scanf ("%d", &seleccion);
        getchar();
Saludos,