Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: GROV en 23 Octubre 2012, 07:54 am



Título: [Ayuda][C] Leer solo un caracter.
Publicado por: GROV en 23 Octubre 2012, 07:54 am
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:

Código:
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

Código:
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!


Título: Re: [Ayuda][C] Leer solo un caracter.
Publicado por: do-while en 23 Octubre 2012, 08:02 am
¡Buenas!

Si no pones el codigo, es dificil adivinar que es lo que estas haciendo mal...

¡Saludos!


Título: Re: [Ayuda][C] Leer solo un caracter.
Publicado por: 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


Título: Re: [Ayuda][C] Leer solo un caracter.
Publicado por: 0xDani en 23 Octubre 2012, 16:11 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.


Título: Re: [Ayuda][C] Leer solo un caracter.
Publicado por: satu en 23 Octubre 2012, 18:58 pm
Hola!!

Puedes hacer algo como esto:
Código
  1. char opcion;
  2. ......
  3. opcion = getchar();
  4. while(getchar() != '\n') ;
  5. switch(opcion)
  6. ............
  7.  

Creo que debería funcionar.

Saludos


Título: Re: [Ayuda][C] Leer solo un caracter.
Publicado por: rir3760 en 24 Octubre 2012, 03:02 am
Puedes hacer algo como esto:
Código
  1. char opcion;
  2. ......
  3. opcion = getchar();
  4. while(getchar() != '\n') ;
  5. switch(opcion)
  6. ............

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":
Código
  1. char ch;
  2.  
  3. /* ... */
  4.  
  5. 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


Título: Re: [Ayuda][C] Leer solo un caracter.
Publicado por: GROV en 24 Octubre 2012, 03:25 am
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!!