Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/05/2014, 23:53
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 11 meses
Puntos: 38
Respuesta: Problema con scanf

acabo de comentar un problema parecido aquí mismo XDD http://www.forosdelweb.com/f96/probl...nes-c-1100363/

va del dichozo buffer ese problema.
el buffer almacena todo hasta que pulsar enter. Y enter nada mas es que una letra '\n'

cuando el programa pide un numero
scanf("%d",&opcion);

y por ejemplo entramos el 22 ¿Que pasa si enter es un char? pues que se queda en el bufer.

entonces la funcion que pide un char lo obtiene el \n y tu a ver navios XD scanf("%c",&opcion);

pues si no quieres tener problema puedes ignorar ese enter haciendo asi cuando te pida un numero.

scanf("%d%*c", &opcion);

el primero %d toma el numero y el segundo %*c ignora el caracter el * delante del especificador de formato hace que lo ignore o sea *c quiere decir *=ignorar c=char

otra forma de ignorarlo es si vas a entrar un numero tener una variable muerta:

int num;
char muerta;

scanf("%d%c", &num, &muerto);

entonces el numero se meterá en num y enter en muerto XDD

y por ejemplo si haces un getch() pon 2 getch seguidos

num=getch();
getch();

hay muchas formas de ignorar ese enter muerto en el buffer, es solo buscar por Internet "como limpiar el buffer en c"

Suerte ;)