Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: <<<-Basura->>> en 9 Octubre 2011, 09:21 am



Título: argumentos del main?
Publicado por: <<<-Basura->>> en 9 Octubre 2011, 09:21 am
Bueno estoy en C, y estoy tratando de pasar argumentos al main, pero se da el caso que quiero pasarle un numero :S, y bueno:

Código
  1. int main(int argc,char **argv){
  2. //...
  3. }
  4.  

argv es el que toma los argumentos, pero es un puntero a char, entonces cuando meto un numero, es tomado como un caracter y lo que quiero es utilizarlo como numero.

intente con:
Código
  1. (int)argv[1];
  2.  
si me lo accepta, pero!, cuando no es el mismo numero que metí, jeje ayuda,

Como hago para pasar un número por argumento??


Título: Re: argumentos del main?
Publicado por: Queta en 9 Octubre 2011, 10:51 am
http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/ (http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/)


Título: Re: argumentos del main?
Publicado por: <<<-Basura->>> en 10 Octubre 2011, 01:05 am
Gracias era lo que estaba necesitando!!  :-*


Título: Re: argumentos del main?
Publicado por: LearningSpanishProgrammer en 10 Octubre 2011, 01:36 am
Una cosa muy importante:

Código
  1. (int)argv[1]
  2.  

No esta hacendo un cast const char * -> int
El compilador está  mostrando el puntero como  "int"

Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char * argv[])
  4. {
  5. printf("%p\n", argv[0]);
  6. printf("%i\n", argv[0]);
  7. printf("%i\n", (int)argv[0]);
  8. printf("%p\n", (int)argv[0]);
  9.  
  10. return 0;
  11. }
  12.  
Entender eso es muy importante para que no repita los mismos errores.



Título: Re: argumentos del main?
Publicado por: <<<-Basura->>> en 12 Octubre 2011, 08:43 am
Si gracias, LearningSpanishProgrammer, lo tomare en cuanta, aunque lo intente distinto y tampoco me sirvió me quedo con la solución de atoi(); XD

Código
  1. (int)*argv[1];
  2.  

así no voy hacer el cast con el valor del puntero sino con el valor que contiene, pero el problema es que me da el valor en el código ascii, ejemplo digamos fue que el 9 el que inserte, entonces el valor de 9 es 57 decimal... pero gracias a tu posición entendí varias cosas :p