Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/05/2012, 03:23
oldesebas
 
Fecha de Ingreso: mayo-2012
Mensajes: 7
Antigüedad: 12 años, 5 meses
Puntos: 0
Cómo evitar que el 'scanf' lea los datos introducidos antes?

Hola a todos. Me explico: Llevo varios días intentando depurar un programa que me da infinidad de errores, la mayoría de los cuales he llegado a la conclusión que se producen por que el 'scanf' me lee datos introducidos anteriormente. Ejemplo:

Código C++:
Ver original
  1. do{
  2.         accion == ' ';
  3.  
  4.         if (accion == 'e' || accion == 'E'){
  5.  
  6.             accion == ' ';
  7.             entrar_vehiculo();
  8.  
  9.         } else if (accion == 's' || accion == 'S'){
  10.  
  11.             accion == ' ';
  12.             salir_vehiculo();
  13.         }
  14.        
  15.         printf("\nIndique acción a realizar (Si entra vehiculo pulse 'E', si sale vehiculo pulse 'S' si desea finalizar el programa pulse 'F'): ");
  16.         scanf("%c", &accion);
  17.  
  18.     } while (accion!= 'f' && accion != 'F');

La primera vez el bucle funciona correctamente, pero las siguientes el 'printf' se me repite dos y hasta tres veces porque, creo, el 'scanf' lee datos "residuales" que he introducido para otras funciones del programa en lugar de esperar a que introduzca nuevos datos, de manera que el bucle da una vuelta sin realizar ninguna acción y vuelve a introducir el texto. Creo que es un error básico, pero no he encontrado solución clara. Agradeceré cualquier aportación.