/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Como saber si el dato ingresado es un entero y no un decimal

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
reytux



Registrado: 28 Sep 2007
Mensajes: 9
Ubicación: ARGENTINA-JUJUY

MensajePublicado: 28/09/2007 8:09 pm
Título: Como saber si el dato ingresado es un entero y no un decimal

Como puedo hacer para que cuando el usuario ingrese un decimal o un caracter informe que lo que se pide es un numero entero y no cualquier cosa.

Éste es mi código y no me convence.

#include<stdio.h>
void main()
{
int numero;

printf("Ingrese un numero entero: ");
printf("\n\nNota: Si ingresa un decimal, el programa tomara la parte entera");
printf("\n\nIngrese un numero entero: ");
scanf("%d",&numero);
printf("\nEl numero ingresado es: %d",numero);

}
Volver arriba
cheroky



Registrado: 22 Sep 2005
Mensajes: 1372
Ubicación: En ecx esperando un call

MensajePublicado: 29/09/2007 4:29 am
Título:

Con scanf la única opción (no muy robusta) es comprobar si el argumento ha sido matcheado correctamente. Ver prótido y especificaciones de scanf.

Código:
int c;
    /*        */
   
         if( scanf("%d",&c) != 1)
       
            puts("ingrese un numero entero plz");
         
/*          */

Una opción más robusta sería usando el binomio fgets + strtol

S2.
_________________
- Explícito es mejor que implícito.
- Simple es mejor que complejo.
- Complejo es mejor que complicado.
- Plano es mejor que anidado.
- Ralo es mejor que denso.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3841
Ubicación: Mexico

MensajePublicado: 29/09/2007 7:05 am
Título:

Si solo se debe permitir la entrada de numeros enteros (pero no de numeros de punto flotante) scanf no serviria ya que en el caso de una entrada como "5.5" esta funcion se "tragaria" el primer 5 reportando una conversion con exito (y dejando la secuencia ".5") en el bufer.

Como ya te indico Cheroky la unica forma a prueba de errores para realizar esa operacion es mediante la funcion strtol, un ejemplo del uso de esta se encuentra al final del tema como comprobar si un entero es digito???.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
reytux



Registrado: 28 Sep 2007
Mensajes: 9
Ubicación: ARGENTINA-JUJUY

MensajePublicado: 29/09/2007 7:50 pm
Título: MUCHISIMAS GRACIAS!!!

ES ESTO LO QUE ANDABA BUSCANDO
UNA BUENA VALIDACION!!!

GRACIAS rir3760 Very Happy
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com