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 ;)