elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  !!! Help Linea de comandos diferentes opciones !!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: !!! Help Linea de comandos diferentes opciones !!!  (Leído 3,294 veces)
Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
!!! Help Linea de comandos diferentes opciones !!!
« en: 20 Noviembre 2010, 13:30 pm »

Buenas, me ha surgido una duda bien sencilla, pero que no se resolver. Quiero decir:
Como hago para que mi programa haga diferentes cosas segun la linea de comandos. No me refiero al tipico argv [], sino a hacer un programa como un mini-NC en el que tu le indiques si quieres conectar,  abrir puertos, etc. La magia de este programa es la gran cantidad de opciones que da, fruto de un gran trabajo sin duda. Lo que quiero decir que el programa sepa identificar:
kc -l -p 31337
como
kc -v 192.168.1.1 -p 80
como
kc 192.168.1.1 -d
como infinitas posibilidades mas.

Si se dan cuenta estan en distintas posibilidades, el problema es que son infinitas...
Leyendo el code de NC te das cuenta de que todo esta organizado con flags y switches, pero como puedo hacerlo + sencillamente???

Si no me entienden pregunten, pues tengo mucho interes....
Gracias


En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: !!! Help Linea de comandos diferentes opciones !!!
« Respuesta #1 en: 20 Noviembre 2010, 13:37 pm »

Si no me equivoco NC utiliza el argv[], es la forma comun de leer los parametros que se pasan de la linea de comandos.


En línea

xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: !!! Help Linea de comandos diferentes opciones !!!
« Respuesta #2 en: 20 Noviembre 2010, 15:37 pm »

Les los argumentos
Código
  1. int main(int argc, char *argv[])
  2.  

y compruebas con strcmp por ejemplo:
Código
  1. if(strcmp(argv[1], "-d") != 0)
  2.    //hacer X cosa
  3. else if()
  4.    //hacer X cosa
  5. else
  6.    //mostrar ayuda
  7.  

Saludos !
En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: !!! Help Linea de comandos diferentes opciones !!!
« Respuesta #3 en: 20 Noviembre 2010, 18:29 pm »

Bueno, casi. Lo que digo es como lo hace NC para que al ejecutar con tales parametros haga tales cosas. Ah pos con strcmp...
Pues no. NC usa tantas opciones que esa forma seria interminable... Como lo hace???

Aparte, muchas gracias por su pronta respuesta...
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
piou

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: !!! Help Linea de comandos diferentes opciones !!!
« Respuesta #4 en: 20 Noviembre 2010, 19:07 pm »

Vale que la manera de colocarlos sea interminable, pero supongamos que tienes los parámetros -a, -b, -c y -d, y que cada uno debe llevar algún dato detrás.
Pues simplemente debes recorrer argv y cada vez que veas uno de esos cuatro coger el siguiente y meterlo en una variable, ya lo tienes guardadito para cuando lo necesites.
Con recorrer argv una vez ya tendrías todos los argumentos.
En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: !!! Help Linea de comandos diferentes opciones !!!
« Respuesta #5 en: 20 Noviembre 2010, 19:32 pm »

Pero y si el usuario, en su normal torpeza que tenemos todos, no introduce algun de esos datos??
bueno muxas gracias, seguire pensando xD...
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: !!! Help Linea de comandos diferentes opciones !!!
« Respuesta #6 en: 20 Noviembre 2010, 19:45 pm »

por aportar una idea:

Código:
para i=0;i<argc;i++
si(argv[i]=="opcion x")
entonces activa x

si(argv[i]=="opcion y")
entonces activa y

si(argv[i]=="opcion z")
entonces activa z
...
fin para
y después continua con su ejecución según los parámetros indicados o con unos por defecto si estos no se han indicado.

En línea

piou

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: !!! Help Linea de comandos diferentes opciones !!!
« Respuesta #7 en: 20 Noviembre 2010, 20:21 pm »

Si el usuario en su infinito torpeza no incluye alguno, pues simplemente no llenarás ese dato, te dejo un pseudocódigo.
Si suponemos que el programa se inicia
./programa -a valor1 -b valor2 -n valorN

Código:
for (i=1;i< numerodeargumentos; i++)
{
       si argv[i] es el argumento1
                configuracion1 = argv[i+1]
       sino si argv[i] es argumento2
                configuracion2 = argv[i+1]
       sino si argv[i] es argumentoN
               configuracionN = argv[i+1]
}

//Ya tenemos todas las configuraciones
Otro bucle que pase por las configuraciones, si alguna no tiene valor o alguna es erronea, se avisa al usuario que no lo ha introducido

Espero ser de ayuda
En línea

xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: !!! Help Linea de comandos diferentes opciones !!!
« Respuesta #8 en: 20 Noviembre 2010, 20:30 pm »

Puedes hacer comprobaciones con argc para saber si faltan parámetros.
En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: !!! Help Linea de comandos diferentes opciones !!!
« Respuesta #9 en: 20 Noviembre 2010, 21:33 pm »

Buenas, ya he conseguido hacerlo correr bien xD... La historia era que voy a presentar una "navaja americana" con menos usos que NC para el concurso. El code lo tenia ya hecho en tres archivos diferentes: hK1, hKK2 y hK3.
Tras un rato cambiando cosas hice:
Código
  1. if (argc < 3 || argc > 4) help ();
  2. if (strcmp (argv [1], "XXXXX")==0)  ------- (atoi (argv [2]));
  3. if (strcmp (argv [1], "XXXXX")==0 && argv [2] != NULL && argv [3] != NULL)  ------- (argv [2], atoi (argv [3]));
  4. if (strcmp (argv [1], "XXXXX")==0) ------- (argv [2]);
  5. return 0;
  6.  
De todos modos muchas gracias por sus respuestas, deberia haberlas leido antes, pero asi servira a otros usuarios XD...
Perdonad que tache todo, lo cambiare el 23!!!

Muchisimas gracias de todos modos!!!
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Opciones de la línea de comandos--> parámetros de main
Programación C/C++
++c 2 2,144 Último mensaje 3 Octubre 2014, 21:22 pm
por ++c
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines