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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucionado] Parametros desde consola
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] Parametros desde consola  (Leído 2,851 veces)
sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
[Solucionado] Parametros desde consola
« en: 2 Enero 2015, 04:07 am »

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.  
  6. char clave[6];
  7. printf("Escriba su clave: ");
  8. scanf("%s",clave);
  9. if(strcmp(clave,"passbasico")==0)
  10. {
  11. system("echo sencillo a ejecutar");
  12. printf("\n");
  13. }
  14. else
  15. {
  16. printf("Clave no valida");
  17. }
  18.  
  19. return 0;
  20. }

Hola soy nuevo en C y quisiera hacer algo así pero que en vez de que sea desde el mismo programa se pueda poner un parámetro externo "-pass passbasico" desde una consola por ejemplo.


« Última modificación: 3 Enero 2015, 03:38 am por sabeeee » En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.459



Ver Perfil
Re: [Ayuda] Parametros desde consola
« Respuesta #1 en: 2 Enero 2015, 04:18 am »

Código
  1. int main(int argc, char** argv)

El argc contiene la cantidad de argumentos pasados,  argv contiene un array  de lo pasado siendo 0 el archivo en si mismo y el resto lo que fue pasado con espacios


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: [Ayuda] Parametros desde consola
« Respuesta #2 en: 2 Enero 2015, 15:30 pm »

Ya va no entiendo bien, quieres que el "parámetro externo" sea el password que introduce el usuario, o sea el password correcto o consigna con el cual debe cotejarse el que introduzca el usuario.

Si es lo segundo, (intuyo que quieres llamar a este programa desde otro programa, que le indique cuál es la clave correcta a considerar) quedaría como:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main( int argc, char **argv)
  6. {
  7.  
  8.   char clave[21];             /* espacio para 20 caracteres, pues 5 es muy poco */
  9.   char clave2[21]; /* clave del usuario */
  10.   if ( argc < 3 ) { /* salir si hay menos de tres argumentos */
  11.      printf("faltan argumentos\n");
  12.      return 1;
  13.   }
  14.  
  15.   if ( !strcmp( argv[1], "-pass" ) ) {
  16.      strncpy( clave, argv[2], 20 );
  17.      clave[21] = '\0';
  18.   }
  19.   else
  20.      return 1;
  21.  
  22.   printf("Escriba su clave: ");
  23.   scanf("%s", clave2);
  24.   while ( getchar() != '\n' ) ;
  25.  
  26.   if ( !strcmp(clave, clave2) ) /* <-- ve aqui */
  27.   {
  28.      printf("sencillo a ejecutar\n");
  29.   }
  30.   else
  31.   {
  32.      printf("Clave no valida\n");
  33.   }
  34.  
  35.   return 0;
  36. }

Con te explicó engel, la declaración
Código
  1. int main(int argc, char** argv)
se usa para leer argumentos de main por consola. El primer argumento argc corresponde al número de argumentos leidos, en este caso 3. Pues el propio nombre de tu programa se considera como un argumento. El segundo argv es un arreglo de cadenas, donde cada cadena corresponde a uno de los argumentos pasados al programa. Ejemplo:
Código:
myprograma -pass xyz
entonces, argc vale 3, y los elementos del array argv serán:
Código:
en argv[0], la cadena "my programa"
en argv[1], la cadena "-pass"
en argv[2], la cadena "xyz"

Ya con esta explicación creo que se entiende el resto del código fuente que te suministré. Al compilar y probarlo verás:

./test -pass xyz
Escriba su clave: xyz
sencillo a ejecutar

pues, se pide cotejar con la clave "xyz". Si introduce una clave distinta a la esperada:

./test -pass xyz
Escriba su clave: abc
Clave no valida


Pequeñas observaciones:
  • Como uso Linux, antecedo el nombre de programa a ejecutar con "./", pero tú no lo necesitas en Windows.
  • La longitud de clave es muy pequeña, la cambié a 21, o sea 20 caracteres más el NULO de terminación. Nunca se te olvide sumar el NULO de terminación.
  • strcpy() requiere la cabecera <string.h>
  • ¿¿¿Para qué haces: system("echo sencillo a ejecutar")??? ... Es lo mismo que printf("sencillo de ejecutar\n"), y no se si has leído que se debe evitar en lo posible el uso de la orden system por ser muy dependiente del SO.

En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: [Ayuda] Parametros desde consola
« Respuesta #3 en: 2 Enero 2015, 20:10 pm »

Excelente entonces, eliminaría el scanf y seria:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main( int argc, char **argv)
  6. {
  7.  
  8.   char clave[21];             /* espacio para 20 caracteres, pues 5 es muy poco */
  9.   char clave2[21] = "hola"; /* clave del usuario */
  10.   if ( argc < 3 ) { /* salir si hay menos de tres argumentos */
  11.      printf("USO: programa -pass \"clave\" \n");
  12.      return 1;
  13.   }
  14.  
  15.   if ( !strcmp( argv[1], "-pass" ) ) {
  16.      strncpy( clave, argv[2], 20 );
  17.      clave[21] = '\0';
  18.   }
  19.   else
  20.      return 1;
  21.  
  22.   if ( !strcmp(clave, clave2) )
  23.   {
  24.      printf("sencillo a ejecutar\n");
  25.   }
  26.   else
  27.   {
  28.      printf("Clave no valida\n");
  29.   }
  30.  
  31.   return 0;
  32. }
« Última modificación: 2 Enero 2015, 20:14 pm por sabeeee » En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: [Ayuda] Parametros desde consola
« Respuesta #4 en: 2 Enero 2015, 23:43 pm »

Excelente !!!  ;D
En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: [Solucionado] Parametros desde consola
« Respuesta #5 en: 3 Enero 2015, 03:39 am »

Muchas gracias a ambos, recomendaría agregar esto a la lista de ejemplos, para los novatos como yo es un poco difícil.  ;D
« Última modificación: 3 Enero 2015, 04:44 am por sabeeee » En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: [Solucionado] Parametros desde consola
« Respuesta #6 en: 4 Enero 2015, 02:31 am »

 ;-) ;-) ;-) Por nada amigo.

Por cierto, esa sintaxis que definiste "test -pass xyz" con el guión antes de la opción se parece a la típica de los comandos de UNIX y derivados. En Windows creo que es más usual el "/" (o sea "/pass" )

Visto que es así, y por lo visto tienes un alma inquieta y ávida de programación, ¿no has pensado en explorar Linux?
En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: [Solucionado] Parametros desde consola
« Respuesta #7 en: 5 Enero 2015, 02:20 am »

yoel_alejandro, te comento, yo soy de Argentina, y a los estudiantes de secundaria (creo que en algunos países es universidad), nos regalan netbooks con la condición de que terminemos la escuela, y porque hay gente desafortunada que nunca pudo tener un ordenador (afortunadamente cada vez son menos), lo cual es excelente (cada vez con mejores especificaciones técnicas). Poseen Windows 7 (2015 traen Windows 8 sino me equivoco y 4gb de ram!) y una distro Huayra, basada en Ubuntu (creo) y es por eso y por una cuestión de "portabilidad" de que intento de que todos mis códigos sean compatibles con Linux, del cual yo no entiendo mucho pero me encantaría saber y el VirtualBox no me va, cuando tenga la net lo pruebo, la mande a desbloquear porque incluyen un chip TPM (hay muchos mitos y leyendas urbanas sobre el jajaja), para evitar ser robada, el cual es muy difícil de corromper, en las net nuevas (mi caso) y es verano acá por eso es que estamos de vacaciones, la escuela esta cerrada jajaja, voy por el ultimo añito ya.

Veo que vos sabes mucho de C/C++, venís ayudando a todos, quizás te venga bien un cargo de "Colaborador" por lo menos ja.

Edit esto es lo que te digo:
http://www.taringa.net/posts/info/18186947/La-nueva-net-del-gobierno-2014-2015-con-4gb-de-ram.html

http://ark.intel.com/es/products/79050/Intel-Celeron-Processor-N2806-1M-Cache-up-to-2_00-GHz

https://www.youtube.com/watch?v=QcP-WS8wU20
« Última modificación: 5 Enero 2015, 02:37 am por sabeeee » En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: [Solucionado] Parametros desde consola
« Respuesta #8 en: 6 Enero 2015, 18:24 pm »

Mmmm, se parece al programa que tiene el gobierno de Venezuela (mi país) con equipos llamados "Canaima", y un SO que dicen propio pero me parece más un clon de Ubuntu y encima sin dar los créditos, ......., en fin así son los políticos.

Sí, trato de ayudar a los que puedo y sería un honor recibir el título de Colaborador, aunque no conozco los requisitos necesarios para ello.

Y aunque no lo parezca, ayudando también se gana, he aprendido mucho respondiendo las preguntas aquí en el foro  :)

Saludos!
En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO] Puedo eliminar los parametros de los EVENTOS? « 1 2 »
.NET (C#, VB.NET, ASP)
Skeletron 10 5,344 Último mensaje 22 Septiembre 2009, 11:35 am
por Jubjub
Ejecutar *.bat con parametros desde aplicación en VB 6.0
Programación Visual Basic
hellfire99 3 7,751 Último mensaje 9 Diciembre 2009, 14:22 pm
por xkiz ™
[SOLUCIONADO] ¿Pasar parámetros a un servicio?
.NET (C#, VB.NET, ASP)
BlaineMonkey 6 9,218 Último mensaje 14 Enero 2010, 17:15 pm
por BlaineMonkey
compilar directo desde consola(solucionado)
Programación C/C++
flony 0 1,290 Último mensaje 28 Noviembre 2010, 23:34 pm
por flony
pasar parametros a otra consola...no a un segundo bat
Scripting
flony 3 2,553 Último mensaje 3 Diciembre 2012, 10:55 am
por r7pyrred
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines