Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Choke1 en 8 Mayo 2015, 18:14 pm



Título: ayuda repeticion
Publicado por: Choke1 en 8 Mayo 2015, 18:14 pm
Tengo el siguiente codigo:

Código
  1.  char fichaX = 'x',fichaC= 'o';
  2.  char jug1,jug2,temp;
  3.  
  4.  
  5.  do{
  6.  printf("introduce ficha jug 1  x o o: ");
  7.  scanf("%c",&jug1);
  8.  }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


Título: Re: ayuda repeticion
Publicado por: Choke1 en 9 Mayo 2015, 17:07 pm
Nadie?


Título: Re: ayuda repeticion
Publicado por: rir3760 en 9 Mayo 2015, 17:46 pm
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:
Código:
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


Título: Re: ayuda repeticion
Publicado por: Choke1 en 9 Mayo 2015, 18:02 pm
Gracias y sabes porque si meto x ó o y me sigue sin salir del bucle??


Título: Re: ayuda repeticion
Publicado por: rir3760 en 9 Mayo 2015, 18:28 pm
Porque estas utilizando el operador OR cuando deberías utilizar AND. Cambia el bucle a:
Código
  1. do {
  2.   printf("introduce ficha jug 1  x o o: ");
  3.   fflush(stdout);
  4.   scanf(" %c", &jug1);
  5. }while (jug1 != fichaX && jug1 != fichaC);

Un saludo


Título: Re: ayuda repeticion
Publicado por: Choke1 en 9 Mayo 2015, 18:39 pm
Claro joder XD gracias por la ayuda!!