Puesto que esta tarde me aburro en el curro, me he propuesto hacer un pequeño tres en raya en c. De momento va bien la cosa, pero a la hora de leer desde teclado la posicion donde colocar la ficha, se me vuelve loco cuando no lee el caracter correcto.
Os explico como lo hago, el usuario tiene que introducir un numero del 1 al 9, dependiendo de donde quiera colocar la ficha. Por lo que tengo que controlar que no se inserte otro caracter o que este fuera de rango, ya que para calcular la posicion lo hago mediante operaciones. Os pongo el codigo y os explico el problema:
Código:
int comprueba(int n){
if(n<1 || n>9)
	return 1;
else 
	return 0;
}
/***********************************/
do{
printf("introduce un numero: ");
scanf("%d",&n);
}while(comprueba(n)==1);
n--;
int fila=n/TAM_TAB;
int col=n%TAM_TAB;
tablero[fila][col]=UNO;
opciones[fila][col]=VACIO;
Bien, como veis, cojo un numero mediante scanf y en la funcion comprueba, simplemente mira que este dentro del rango, entonces si no lo esta,deberia de volver a pedir el numero. El caso esta en cuando meto una letra o caracter raro (.,- etc), en vez de volver a pedir el caracter, entra en un bucle infinito y muestra el mensaje de inserte un numero sin parar, sin llegar nunca ha volver a pedir el numero.
A que puede ser debido esto??