Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/11/2013, 16:32
Avatar de guzzano
guzzano
 
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 9 meses
Puntos: 13
Respuesta: Saber si argv es un numero real en c

Buenas. Se me ocurrió esta forma, le falta algunas verificaciones y tal, pero te dará una idea.

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. int
  6. main (argc, argv)
  7.  
  8. int argc;
  9. char *argv[];
  10.  
  11. {
  12.   char safe_string[9] = {0};
  13.   char * tmp_string;
  14.  
  15.   int size_str = 0;
  16.   int is_number = 0;
  17.  
  18.   if (argc < 2) {
  19.     fprintf(stderr, "[error] faltó un argumento.\n");
  20.     return 0;
  21.   }
  22.  
  23.   strncat(safe_string, argv[1], sizeof safe_string);
  24.   tmp_string = safe_string;
  25.  
  26.   /* Solo puede: -número. Mas no: núm-ero. */
  27.   if (safe_string[0] == '-')
  28.     size_str++;
  29.   /* */
  30.  
  31.   while (*tmp_string != '\0')
  32.   {
  33.     if (isdigit(*tmp_string) || *tmp_string == '.')
  34.           size_str++;
  35.      
  36.     tmp_string++;
  37.   }
  38.  
  39.   is_number = strnlen(argv[1], sizeof safe_string) - size_str;
  40.  
  41.   if (is_number == 0)
  42.     puts("Sí, es un número.");
  43.   else
  44.     puts("No, no es un número.");
  45.  
  46.   return 0;
  47. }