Título: consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados Publicado por: etcheverrypablol en 19 Enero 2016, 03:39 am Chicos, otra duda!
Para el siguiente código: #include <stdio.h> int main(int argc, char const *argv[]) { int x; char y; scanf("%d %c", &x, &y); printf("%d\n",x ); printf("%c\n",y ); return 0; } Al colocar como entrada 5 4, lo que sucede es que muestra lo siguiente: 5 4 Pero al colocar la entrada 5c, muestra 5 c ¿Cómo es que sucede eso? Pensé que solo al dejar espacio entre entradas o colocar una entrada, dar enter y colocar la segunda y dar enter, se leen dos entradas por separado. Pero en este úlitmo caso, con un solo enter, el programa considera que son dos entradas distintas (5 y c), por más que yo haya escrito una (5c). Algo se me está pasando por alto. -.- Título: Re: consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados Publicado por: crack81 en 19 Enero 2016, 04:20 am Lo que pasa que en tu codigo primero intentara leer un entero y luego un caracter
supongamoss que pones 5c buen el programa primero leera el primer entero que se encuentre, entonces mira y ve que hay un cinco pero se percata que despues del 5 hay un valor que no es un entero entonces da por entedido que tiene que leer hasta ahi entonces ese 5 se almacena en la variable x despues de guardar el primer valor, la funcion scanf nos indica que tambien va a leer un caracter entonces encuentra que 'c' es char valido entonces ahi para despues guardar el valor en la variable [Y] y mostar los resultados intenta poniendo por consola 5cx y veras que te muestra el 5 y c en cambio si pones 55C te mostrar 55 y C digamos que el lenguaje intentar leer lo que ha especificado en la funcion scanf si tu le dices que primero leerá un entero y luego un char intetara encontrar los valores que se adapte a lo que les estas pidiendo en el scanf es por eso que si lo pones pegado primero toma el int y despues el char. Título: Re: consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados Publicado por: etcheverrypablol en 19 Enero 2016, 04:43 am Hola crack81.
Efectivamente he probado con tus ejemplos y obtuve los resultados que comentaste. Ahora una pequeña duda. Si yo ingreso la entrada 44 c y doy enter. (Observar que hay un espacio entre medio). El programa me muestra por pantalla: 44 c Ahora, qué sucede con el espacio que dejo entre medio. Por qué ese espacio no es leido como un caracter? En todo caso se podría mostrar por pantalla sólo 44 y abajo un espacio en blanco que no se vería. ¿Sabes a qué se debe esto? Título: Re: consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados Publicado por: fary en 19 Enero 2016, 05:46 am Porque scanf lee hasta que encuentra un espacio en blanco :xD Pero como tu le has indicado que busque un caracter despues el entero lo busca.
Prueba a hacer esto: Código
E introduce un texto como "Hola soy fary". Vas a ver que solo te imprime "Hola". saludos. |