[C con Clase] Dudas con printf y scanf
Info DSD
info en dysd.com.ar
Dom Dic 30 01:31:43 CET 2007
Hola
En la parte de " Debe introducir una opcion valida" imprimí el contenido de
opcion como carácter y como entero para que veas el contenido en ese
momento, te va a dar una idea de cómo resolverlo y que es lo que almacena
scanf en la variable char.
Saludos.
Darío.-
> -----Mensaje original-----
> De: cconclase-bounces en listas.conclase.net [mailto:cconclase-
> bounces en listas.conclase.net] En nombre de JoseL
> Enviado el: Sábado, 29 de Diciembre de 2007 06:29 p.m.
> Para: cconclase en listas.conclase.net
> Asunto: [C con Clase] Dudas con printf y scanf
>
> Hola,
>
> Estoy con los primeros capítulos del curso y he empezado a mirar también
> algunas funciones de las librerías estándar. Concretamente estaba
> experimentando con printf y scanf, con la idea de escribir un prototipo de
> programa que muestre opciones y se reinicie indefinidamente hasta que el
> usuario seleccione expresamente la opción 'salir'. Más o menos así:
>
>
> #include <cstdio>
> #include <cstdlib>
>
> int main()
> {
> char opcion;
>
> /* Este bucle se repetirá indefinidamente mientras no se elija
> opción 'salir' (opcion == '4') */
>
> while(true)
> {
> printf("\n\n\t--- MENU PRINCIPAL ---\n\n");
>
> printf(" 1 - Hacer una primera cosa\n");
> printf(" 2 - Hacer una segunda cosa\n");
> printf(" 3 - Hacer una tercera cosa\n");
> printf(" 4 - Salir\n\n");
>
> printf(" Introduce una opcion: ");
> scanf("%c", &opcion);
>
> switch(opcion)
> {
> case '1':
> {
> printf("\n\tCodigo para la opcion
'1'...\n");
> break;
> }
> case '2':
> {
> printf("\n\tCodigo para la opcion
'2'...\n");
> break;
> }
> case '3':
> {
> printf("\n\tCodigo para la opcion
'3'...\n");
> break;
> }
> case '4': return 0;
> // La única opción para finalizar el
programa.
>
> default:
> printf("\n\n Debe introducir una opcion
> valida\n");
> }
>
> printf("\n Presione cualquier tecla para volver al menu
> principal...\n");
> system("pause>null");
> }
> }
>
> El caso es que no se comporta como yo esperaba. Mejor me explico mostrando
> lo que aparece en la consola:
>
>
> --- MENU PRINCIPAL ---
>
> 1 - Hacer una primera cosa
> 2 - Hacer una segunda cosa
> 3 - Hacer una tercera cosa
> 4 - Salir
>
> Introduce una opcion: 1
> [Tecleo 1 y pulso INTRO]
>
> Codigo para la opcion '1'...
>
> Presione cualquier tecla para volver al menu principal...
> [Pulso INTRO]
>
>
> --- MENU PRINCIPAL ---
>
> 1 - Hacer una primera cosa
> 2 - Hacer una segunda cosa
> 3 - Hacer una tercera cosa
> 4 - Salir
>
> Introduce una opcion:
> [Debería pararse aquí, pero no se detiene, y se comporta como
> si]
> hubiera introducido una opción no válida:]
>
> Debe introducir una opcion valida
>
> Presione cualquier tecla para volver al menu principal...
> [Pulso INTRO]
>
>
> --- MENU PRINCIPAL ---
>
> 1 - Hacer una primera cosa
> 2 - Hacer una segunda cosa
> 3 - Hacer una tercera cosa
> 4 - Salir
>
> Introduce una opcion: 4
> [Ahora si se detiene]
>
>
> A ver si alguien me puede explicar qué debería hacer para que el programa
> funcione correctamente.
>
> Gracias y un saludo.
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
Más información sobre la lista de distribución Cconclase