PDA

Ver la versión completa : [Programación] [C] ¿Como recuperar float pasado como argumento a un programa?



nakio
12/04/2010, 20:34
Pues eso mismo si yo tengo mi programa llamemoslo "Gepeto" y le paso por terminal uno o varios floats:



nakio@caca~/ ./Gepeto 4.0 12.0


Como recuperaría esos valores float de argv?
He intentado un casting de la siguiente forma pero no funciona :( me estoy atascando con esta mierdecilla y me estoy empezando a volver gilipollens xD

El susodicho casting:



void main(int argc, char *argv[], char *envp[]){
float fulano;
float mengano;
fulano = (float)argv[1];
mengano = (float)argv[2];

...

}


Alguna idea?

Saludos y gracias, Nakio.

Propeller
12/04/2010, 20:35
atof, creo recordar.

nakio
12/04/2010, 20:38
atof, creo recordar.

Mil gracias, ya esta ^^

Saludos, Nakio.

juanvvc
12/04/2010, 20:43
fulano = (float)atof(argv[1]);

En realidad atof devuelve un double, que te puede servir o no, pero si quieres un float tienes que convertirlo :) Además atof() no comprueba que la cadena es válida, y en caso de que no sea válida puede devolver cualquier cosa. strtod(), en cambio, devuelve 0.0 en caso de error.

http://www.bigbiz.com/cgi-bin/manpage?3+atof

nakio
12/04/2010, 21:01
fulano = (float)atof(argv[1]);

En realidad atof devuelve un double, que te puede servir o no, pero si quieres un float tienes que convertirlo :) Además atof() no comprueba que la cadena es válida, y en caso de que no sea válida puede devolver cualquier cosa. strtod(), en cambio, devuelve 0.0 en caso de error.

http://www.bigbiz.com/cgi-bin/manpage?3+atof

Gracias por la información, me viene bien ;)

Saludos, Nakio.

Puck2099
12/04/2010, 21:39
A mi atof me ha dado muchos problemas en el pasado... mi solución aunque algo más cutre fue usar sscanf y ya las cadenas adecuadas.