Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/10/2010, 10:20
RoDaVi
Invitado
 
Mensajes: n/a
Puntos:
No producir desbordamiento con tipo int.

Hola a todos
Lo que estoy buscando es una manera segura de ingresar un entero por teclado y guardarlo en una variable int.-
El programa que dejo a continuación se acerca bastante pero tengo un problema, si ingreso por ejemplo 99999 estoy sobrepasando el máximo permitido para el tipo int.-
Estoy leyendo sobre limits.h y errno pero no logro implementarlo.-
Otra cosita, ¿si verifico con un bucle cada carácter ingresado y resultara ser todos números,y no sobrepasara el máximo permitido para el tipo int?, ¿sera muy complicado?

Código:
#include <stdio.h>
#include <stdlib.h>

#define IMPRIME printf ("\n\tIngrese un numero (maximo a 5 digitos)...: ");

int verifica(void)
{
   char buf[30];
   char *p;
   int numero,ver=0;

   while(ver !=1)
   {
      if (fgets(buf, 6, stdin) != NULL)
      {
         numero = strtol(buf, &p, 10);
      }
  
      if (buf[0] != '\n' && (*p == '\n' || *p == '\0'))
      {
         ver=1;
      }
      else
      {
         printf("\n\tNo es numero (apriete una tecla para continuar)...");system("PAUSE>null"); 
         system("cls");
         IMPRIME;
      }
   }
   return numero; 
}


int main(void)
{
   int numVer;
   IMPRIME(numVer=verifica()); 

   printf("\n\tIngreso..:%d - Apriete una tecla para cerrar la ventana...",numVer);system("PAUSE>null");	
   return 0;
}
Gracias por el tiempo.-
Saludos.
Daniel