elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda][C] Leer solo un caracter.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda][C] Leer solo un caracter.  (Leído 11,115 veces)
GROV

Desconectado Desconectado

Mensajes: 23



Ver Perfil WWW
[Ayuda][C] Leer solo un caracter.
« 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!


En línea

"Ningún problema debe de resolverse dos veces"
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: [Ayuda][C] Leer solo un caracter.
« Respuesta #1 en: 23 Octubre 2012, 08:02 am »

¡Buenas!

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

¡Saludos!


En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
ankora45

Desconectado Desconectado

Mensajes: 52



Ver Perfil
Re: [Ayuda][C] Leer solo un caracter.
« Respuesta #2 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
En línea

Hay dos cosas infinitas en este mundo, el universo y la estupidez humana, y de la primera no estoy muy seguro
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Ayuda][C] Leer solo un caracter.
« Respuesta #3 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.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: [Ayuda][C] Leer solo un caracter.
« Respuesta #4 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
En línea

Breakbeat como forma de vida
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [Ayuda][C] Leer solo un caracter.
« Respuesta #5 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
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
GROV

Desconectado Desconectado

Mensajes: 23



Ver Perfil WWW
Re: [Ayuda][C] Leer solo un caracter.
« Respuesta #6 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!!
En línea

"Ningún problema debe de resolverse dos veces"
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines