SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: 11_8_88 en Martes 9 de Noviembre de 2010, 11:12

Título: Duda con atof
Publicado por: 11_8_88 en Martes 9 de Noviembre de 2010, 11:12
Hola a todos, estoy usando la función atof para hacer casting de char a double, lo que necesito es que además de que me haga el casting comprobar que se un tipo compatible, es decir que si mi cadena no es un número que me de algún tipo de error que yo pueda tratar, por lo que he leido y he probado atof devuelve 0 en estos caso, pero me da un problema en el siguiente caso:

 char *p = "12adg"; al aplicar la función me devuelve 12 y yo necesitaría que devolviera 0 ó error para yo tratarlo.

¿hay alguna otra función que me pueda seervir?.

Un salduo y muchas gracias.
Título: Re: Duda con atof
Publicado por: m0skit0 en Martes 9 de Noviembre de 2010, 11:18
Prueba con strtof (http://linux.die.net/man/3/strtof).
Título: Re: Duda con atof
Publicado por: 11_8_88 en Martes 9 de Noviembre de 2010, 13:07
Gracias por la respuesta, pero estoy programando un PIC y no me permite usar esa funcion.

Gracias.
Título: Re: Duda con atof
Publicado por: m0skit0 en Martes 9 de Noviembre de 2010, 15:41
Dudo que no se pueda usar esa función. Viene en stdlib.h.
Título: Re: Duda con atof
Publicado por: 11_8_88 en Martes 9 de Noviembre de 2010, 16:45
Si tienes toda la razon pertenece a esa librería, lo q pasa es que al ser un dipositivo propietario y de bajos recursos las librerías que aporta para ser progrmado están adaptadas y limitadas como es el caso de la función que me aconsejas, en realida solo busco validar que un dato que lo obtengo como un char * sea entero.

Un salduo y muchas gracias.
Título: Re: Duda con atof
Publicado por: diego.martinez en Martes 9 de Noviembre de 2010, 17:31
te vale con un bucle de nada!
Código: C++
  1.  
  2.  
  3. int i=0;
  4.  
  5. if (string_con_numero[0]=='+' || string_con_numero[0]=='-')
  6. i=1;
  7.  
  8. for (;string_con_numero[i]!=0;i++)
  9. {
  10. if (string_con_numero[i]>'9' || string_con_numero[i]<'0')
  11. return false;
  12. }
  13.  
  14. return true;
  15.  
  16.  
  17.  
Título: Re: Duda con atof
Publicado por: 11_8_88 en Martes 9 de Noviembre de 2010, 21:22
muchas gracias, ya habia pensado en algo parecido pero creia que podría hacerlo con alguna función ya implementada.

Un saludo y gracias a los 2 por vuestra ayuda.
Título: Re: Duda con atof
Publicado por: Geo en Miércoles 10 de Noviembre de 2010, 04:48
Tienes que revisar la documentación del compilador que estés usando, revisa qué funciones estándar están implementadas, si no hay ninguna, tendrás que hacerlo "a mano".