[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