elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados  (Leído 2,329 veces)
etcheverrypablol

Desconectado Desconectado

Mensajes: 37


¡Hoy mejor que ayer, mañana mejor que hoy!


Ver Perfil
consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados
« 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. -.-







En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados
« Respuesta #1 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.


« Ú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 Desconectado

Mensajes: 37


¡Hoy mejor que ayer, mañana mejor que hoy!


Ver Perfil
Re: consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados
« Respuesta #2 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?
En línea

fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados
« Respuesta #3 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
  1. char buffer[10];
  2. scanf("%s",&buffer);
  3. printf("%s\n",buffer);

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.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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 Último mensaje 10 Abril 2008, 20:32 pm
por Zeroql
Arbol multinivel con una sola consulta
PHP
Alex_bro 6 10,065 Último mensaje 15 Agosto 2011, 22:22 pm
por Alex_bro
Leer un char como float
Programación C/C++
za.asi 7 4,323 Último mensaje 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 Último mensaje 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 Último mensaje 30 Diciembre 2014, 04:13 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines