Buenas noches a todos, bueno veran, generalizando estoy haciendo un programa para una clase en la escuela el cual tiene un menu con switch y do_while que, en los casos, utiliza caracteres. El problema que tengo es que cuando introduzco algo asi como:
aefs
el programa primero se va al caso 'a', doy un enter y se va al caso 'e', luego al caso 'f', despues como no tengo caso 's' entra al default, después de pasar por cada caso me regresa al menu, mi duda es que podria hacer para que al introducir de nuevo
aefs
solo me tome encuenta el primer caracter, entre a ese caso independientemente del que sea y vuelva al menu, osea que solo me tome el primer caracter y los demás me los ignore.
De antemano muchas gracias, y espero me puedan ayudar.
Saludos!
¡Buenas!
Si no pones el codigo, es dificil adivinar que es lo que estas haciendo mal...
¡Saludos!
Hola, puedes crear una cadena char menu[50]y pasarle a switch(menu[0])
asi lee solo el primer caracter asi si pones asdf siempre te lleva al defaul sin pasar por todas las letras
Cita de: ankora45 en 23 Octubre 2012, 12:13 PM
Hola, puedes crear una cadena char menu[50]y pasarle a switch(menu[0])
asi lee solo el primer caracter asi si pones asdf siempre te lleva al defaul sin pasar por todas las letras
Ocupar 50 bytes para solo utilizar uno... digamos que no es la mejor solucion.
Hola!!
Puedes hacer algo como esto:
char opcion;
......
opcion = getchar();
while(getchar() != '\n') ;
switch(opcion)
............
Creo que debería funcionar.
Saludos
Cita de: satu en 23 Octubre 2012, 18:58 PMPuedes hacer algo como esto:
char opcion;
......
opcion = getchar();
while(getchar() != '\n') ;
switch(opcion)
............
Creo que debería funcionar.
Funciona pero hay que cambiar el tipo de la variable "opcion" a "int" ya que ese es el tipo de retorno de la función "getchar".
Otra forma es mediante "scanf":
char ch;
/* ... */
scanf(" %c%*[^\n]%*c", &ch);
Ahí cadena de formato indica:
1) " " leer y descartar el espacio blanco al inicio de la linea.
2) "%c" leer un carácter y almacenarlo en la variable "ch".
3) "%*[^\n]" leer y descartar todo carácter distinto de '\n'.
4) "%*c" leer y descartar un carácter (el '\n').
Un saludo
Ok, muchas gracias a todos me han ayudado mucho, y si, se me ocurrio hacerlo como dijo @ankora45, pero si no es la forma más eficiente, y ambas formas me funcionaron
@satu y @rir3760, se los agradezco.
Saludos!!