Tengo el siguiente codigo:
char fichaX = 'x',fichaC= 'o';
char jug1,jug2,temp;
do{
printf("introduce ficha jug 1 x o o: ");
scanf("%c",&jug1);
}while(jug1!=fichaX || jug1!=fichaC);
Y el problema es que al introducir cualquier letra me repite dos veces seguidas el printf aunque introduzca tb la x || o
A que puede deberse?
Mod: Los códigos deben ir en etiquetas GeSHi
Nadie?
El problema se debe a que el especificador "%c" se traga (procesa) el primer carácter que se encuentre en la entrada estándar sin importar cual sea este. Si tu tecleas:
x{ENTER}
Ahí tienes dos caracteres ('x' y '\n') los cuales generan el comportamiento que mencionas.
Para solucionarlo, esto es, descartar el espacio blanco inicial de forma similar a los otros especificadores como "%d", "%s", etc. basta con utilizar " %c" (un espacio antes de caracter '%').
Un saludo
Gracias y sabes porque si meto x ó o y me sigue sin salir del bucle??
Porque estas utilizando el operador OR cuando deberías utilizar AND. Cambia el bucle a:
do {
printf("introduce ficha jug 1 x o o: ");
fflush(stdout);
scanf(" %c", &jug1);
}while (jug1 != fichaX && jug1 != fichaC);
Un saludo
Claro joder XD gracias por la ayuda!!