Cool C/C++

Programacion en C/C++

Home Foros
Bienvenido, Invitado
Por favor Identificarse o Registrarse.    Contraseña olvidada?

Leer caracter por teclado desues de leer un entero
(1 viendo) (1) Invitado
AbajoPágina: 1
TEMA: Leer caracter por teclado desues de leer un entero
#320
Leer caracter por teclado desues de leer un entero Creado el día: 12/05/2015 21:32 Karma: 0
Hola a todos,

Alguien sabe porque despues de haber leido un dato entero en el siguiente codigo cuando intento leer un caracter simple al parecer no se ejecuta la linea del scanf();.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int salario;
char letra;

printf("Ingrese el Sueldo Bruto del Empleado: ");
scanf("%i", &salario);

printf("Se Encuentra Afiliado a Salud s/n: ");
scanf("%c", &letra);

return 0;
}


Si coloco las dos instrucciones en donde se lee el caracter antes de la donde se lee el entero, el codigo se ejecuta como se espera, pero colocando las instrucciones tal y como estan en el codigo que copie, no me da para escribir el caracter y la ejecución finaliza.

Espero alguien pueda resolver mi duda.

Saludos.
miloarias
Navegador Iniciado
Mensajes: 2
graphgraph
Usuario Offline Presiona aquí para ver el perfil de este usuario
El administrador ha deshabilitado la escritura pública.
 
#321
Re: Leer caracter por teclado desues de leer un entero Creado el día: 13/05/2015 17:48 Karma: 0
Lo que necesitas es agregar la función fflush, te pongo un ejemplo:

printf("Ingrese el Sueldo Bruto del Empleado: ");
scanf("%i", &salario);

/*limpiar el buffer*/
fflush(stdin);

printf("Se Encuentra Afiliado a Salud s/n: ");
scanf("%c", &letra);

printf("Valor leido: %d\n",salario);
printf("Caracter leido: %c\n",letra);
ajo
Navegador Iniciado
Mensajes: 8
graphgraph
Usuario Offline Presiona aquí para ver el perfil de este usuario
El administrador ha deshabilitado la escritura pública.
 
#322
Re: Leer caracter por teclado desues de leer un entero Creado el día: 15/05/2015 14:58 Karma: 0
Si, con esa función si me ejecuto con normalidad el codigo.

¿Pero porque limpiar el buffer? No se supone que las dos variables pertenecen a posiciones de memoria diferentes y en cada una de estas posiciones se debe de almacenar el respectivo tipo de dato. ¿Eso es mas cuestión en este caso del lenguaje de programación o que?.

Saludos.
miloarias
Navegador Iniciado
Mensajes: 2
graphgraph
Usuario Offline Presiona aquí para ver el perfil de este usuario
El administrador ha deshabilitado la escritura pública.
 
#326
Re: Leer caracter por teclado desues de leer un entero Creado el día: 01/06/2015 07:28 Karma: 1
Normalmente lo que lees de teclado se coloca en un bufer que es una especia de memoria intermedia.

Aunque a veces no hace falta, se suele limpiar el bufer para asegurarte que lo que lees de teclado corresponde al último ingreso y no a uno anterior.

Para limpiar el bufer se suele colocar lo siguiente antes de invocar a scanf, gets entre otras:

fflush(stdin);
adrianvaca
Administrador
Mensajes: 104
graph
Usuario Offline Presiona aquí para ver el perfil de este usuario
Última edición: 01/06/2015 07:29 por adrianvaca.
El administrador ha deshabilitado la escritura pública.
El conocimiento es una forma de empezar a ser libre
 
ArribaPágina: 1
obtén los últimos mensajes directamente en tu escritorio