Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Saber si argv es un numero real en c

Estas en el tema de Saber si argv es un numero real en c en el foro de C/C++ en Foros del Web. Hola buenas, he buscado en google y no encuentro ninguna función ni nada que me diga si un párametro argv es un numero real. Alguna ...
  #1 (permalink)  
Antiguo 06/11/2013, 10:15
 
Fecha de Ingreso: noviembre-2012
Mensajes: 6
Antigüedad: 11 años, 5 meses
Puntos: 0
Saber si argv es un numero real en c

Hola buenas, he buscado en google y no encuentro ninguna función ni nada que me diga si un párametro argv es un numero real. Alguna idea? Gracias.
  #2 (permalink)  
Antiguo 07/11/2013, 02:10
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Saber si argv es un numero real en c

Prototipo de la función main:

int main (int argc, char **argv)

argc indica el número de argumentos que se han pasado al programa al invocarlo por línea de comando.
argv es una lista de punteros a carácter, estos punteros apuntan a cada uno de los argumentos pasados en la línea de comando al invocar al programa.

Por ejemplo:

miprograma uno dos

argc = 3 (se han pasado tres argumentos, que son el nombre del programa y las cadenas de caracteres "uno" y "dos"
argv[0] = "miprograma" (argv[0] siempre contiene el nombre del programa, argc siempre valdrá, como mínimo, 1)
argv[1] = "uno"
argv[2] = "dos"

Espero que esto responda a tu pregunta.

Saludos,
  #3 (permalink)  
Antiguo 07/11/2013, 11:22
 
Fecha de Ingreso: octubre-2012
Mensajes: 33
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Saber si argv es un numero real en c

siempre recibis strings
  #4 (permalink)  
Antiguo 07/11/2013, 16:32
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 8 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. }

Etiquetas: numero, real
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:02.