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);
Registrado: 22 Sep 2005 Mensajes: 1372 Ubicación: En ecx esperando un call
Publicado: 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.
Registrado: 01 Oct 2004 Mensajes: 3841 Ubicación: Mexico
Publicado: 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