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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda-C] Leer entero desde stdin
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda-C] Leer entero desde stdin  (Leído 2,981 veces)
Miky Gonzalez

Desconectado Desconectado

Mensajes: 87

http://mikygonzalez.comule.com/blog/


Ver Perfil WWW
[Ayuda-C] Leer entero desde stdin
« en: 28 Septiembre 2013, 12:01 pm »

Mi problema es el siguiente: supongamos que sólo tengo una función que me permite cojer 1 solo caracter numérico (getch() - 48). ¿Cómo podría hacer para cojer mas de un caracter?.

Si no lo entiendo les pongo un ejemplo: yo tengo una variable tipo entero. Hago que se guarde el valor devuelto por getch() a mi variable tipo entero. Algo como:
Código
  1. Introduce un numero: 4
  2. Numero introducido: 4
El problema viene cuando:
Código
  1. Introduce un numero: 42
  2. Numero introducido: 4
Como es de obviar, el 2 se queda en el buffer. Cómo puedo hacer, suponiendo que sólo tengo la función getch que sólo lee un caracter, la lectura de enteros (hasta encontrar caracter 0xA ('\n'). Supongamos tambien que el valor devuelto por getch() es de tipo entero.


En línea

Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:


EN CONSTRUCCIÓN
erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: [Ayuda-C] Leer entero desde stdin
« Respuesta #1 en: 28 Septiembre 2013, 19:56 pm »

No se si sea la mejor solucion, si dices que getch() devuelve un entero, yo incluiria el getch() dentro de un bucle, luego verifico que el valor introducido sea distinto de '\n', si es asi, luego verifico que este entro 0 - 9, y si es asi entonces ese numero lo guardo en un arreglo de chars, cuando el usuario introduzca '\n', entonces se sale del bucle y transformas esa cadena de caracteres a int, asi lo haria yo.

EDIT: Alli estoy asumiendo que el usuario esta introduciendo el numero sin equivocarse, porque si lo escribe mal y quiere borrar, este codigo no hara eso jeje


« Última modificación: 28 Septiembre 2013, 19:57 pm por erest0r » En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [Ayuda-C] Leer entero desde stdin
« Respuesta #2 en: 29 Septiembre 2013, 02:50 am »

supongamos que sólo tengo una función que me permite cojer 1 solo caracter numérico (getch() - 48). ¿Cómo podría hacer para cojer mas de un caracter?.
Utilizas un bucle donde lees cada uno de los dígitos utilizando estos para generar el numero, el resto de la linea (por lo menos el '\n') lo descartas con otro bucle.

Un ejemplo básico (sin validaciones) utilizando la función getchar (tu caso es similar):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int ch;
  7.   int num;
  8.  
  9.   printf("Introduce el numero: ");
  10.   fflush(stdout);
  11.   num = 0;
  12.   /* Procesamos cada uno de los digitos */
  13.   while ((ch = getchar()) >= '0' && ch <= '9')
  14.      num = num * 10 + ch - '0';
  15.   /* Descartamos el resto de la linea */
  16.   while (ch != EOF && ch != '\n')
  17.      ch = getchar();
  18.  
  19.   printf("num == %d\n", num);
  20.  
  21.   return EXIT_SUCCESS;
  22. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como leer datos desde una web? « 1 2 »
Programación Visual Basic
fernan3001 12 4,598 Último mensaje 10 Enero 2006, 16:29 pm
por jrhomer
Ayuda, leer datos desde el puerto paralelo
Electrónica
Monkito 0 2,492 Último mensaje 30 Diciembre 2005, 23:37 pm
por Monkito
Leer contenido de un txt desde una web
Programación Visual Basic
enterariel 4 3,499 Último mensaje 29 Septiembre 2011, 16:26 pm
por enterariel
leer XML desde una URL - F1
Programación Visual Basic
Maurice_Lupin 0 1,590 Último mensaje 14 Marzo 2013, 03:34 am
por Maurice_Lupin
¿Leer variable desde RAM? (C# - con source obtenido desde Reflector) « 1 2 »
Ingeniería Inversa
Shout 12 7,066 Último mensaje 15 Agosto 2013, 05:57 am
por Novlucker
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines