Autor
|
Tema: consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados (Leído 2,329 veces)
|
etcheverrypablol
Desconectado
Mensajes: 37
¡Hoy mejor que ayer, mañana mejor que hoy!
|
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. -.-
|
|
|
En línea
|
|
|
|
crack81
Desconectado
Mensajes: 222
|
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.
|
|
« Última modificación: 19 Enero 2016, 04:24 am por crack81 »
|
En línea
|
Si C/C++ es el padre de los lenguajes entonces ASM es dios.
|
|
|
etcheverrypablol
Desconectado
Mensajes: 37
¡Hoy mejor que ayer, mañana mejor que hoy!
|
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?
|
|
|
En línea
|
|
|
|
fary
|
Porque scanf lee hasta que encuentra un espacio en blanco Pero como tu le has indicado que busque un caracter despues el entero lo busca. Prueba a hacer esto: char buffer[10];
E introduce un texto como "Hola soy fary". Vas a ver que solo te imprime "Hola". saludos.
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
leer los archivos de una carpeta y mostrarlos en un combobox (cerrado)
Programación Visual Basic
|
Zeroql
|
5
|
2,220
|
10 Abril 2008, 20:32 pm
por Zeroql
|
|
|
Arbol multinivel con una sola consulta
PHP
|
Alex_bro
|
6
|
10,065
|
15 Agosto 2011, 22:22 pm
por Alex_bro
|
|
|
Leer un char como float
Programación C/C++
|
za.asi
|
7
|
4,323
|
24 Octubre 2012, 17:11 pm
por za.asi
|
|
|
Ayuda leer cadenas y guardarlas en una sola variable
Programación C/C++
|
rulax01
|
3
|
2,080
|
21 Noviembre 2014, 00:49 am
por zShackra
|
|
|
[C] Problema al leer un char dentro de un while
Programación C/C++
|
cesariox23
|
3
|
5,003
|
30 Diciembre 2014, 04:13 am
por rir3760
|
|