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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Capturar el argumento del Main en una cadena?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Capturar el argumento del Main en una cadena?  (Leído 4,832 veces)
joelmanx

Desconectado Desconectado

Mensajes: 38


programador java por si


Ver Perfil WWW
Capturar el argumento del Main en una cadena?
« en: 9 Octubre 2010, 07:39 am »

hola a todos quiero que me ayuden por favor, a capturar el argumento, que recibe el metodo main, para poder trabajar con el.
Código:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <shellapi.h>
void main(int ARGC,char *ARGV[])
{   
   
system("javaw -cp ExeJava.jar MainClassJava \"ARGV\" ");
 
}

es decir que quiero capturar ARGV, es que quiero capturarlo para luego, pasarlo como parametro a otra aplicacion.

en el codigo que muestro no me resulta, me ayudan a mejorarlo?
como me sugieren que lo haga?


En línea

proyectos libres que desarrollo, si quieres colaborar, únete y hagamos un buen aporte.

http://guitarragnu.sourceforge.net/ (Software Educativo)
http://evsigmapserverj.sourceforge.net/ ( Software GIS, SIG, Mapserver)
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Capturar el argumento del Main en una cadena?
« Respuesta #1 en: 9 Octubre 2010, 08:32 am »

¡Buenas!

Solo dos detalles.

El primer argumento de main puedes llamarlo, argc como en la forma tradicional, numeroParametros que es mas descriptivo en castellano o si quieres Juan lo cual no tiene ningun sentido, pero sirve para expresar que puedes utilizar cualquier identificador para nombrarlo, siempre y cuando te aclares, como con cualquier variable. Este primer parametro te indica cuantos argumentos ha recivido el programa y se le añade uno, porque el mismo nombre del programa es tambien un argumento (el primero).

El segundo argumento de la funcion main, es un vector (array) que contiene las cadenas que representan los distintos argumentos que has pasado al programa. El primero de ellos sera el nombre del propio programa, y el resto los argumentos propios.

No se que es lo que quieres hacer exactamente, pero esta descripcion la deberas adaptar a tus necesidades segun devas llamar a una funcion o programa ageno a main. Esta es la descripcion en C de los argumentos del programa. Ahora tendras que adaptarlos a lo que tu quieras, y por supesto, tendras que conocer bien como funciona el objeto de tu llamada, para poder adaptar lo arriba descrito a tus obejtivos.

¡Saludos!


En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Capturar el argumento del Main en una cadena?
« Respuesta #2 en: 9 Octubre 2010, 16:21 pm »

Tal vez te venga bien esta funcion:
GetCommandLine
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
joelmanx

Desconectado Desconectado

Mensajes: 38


programador java por si


Ver Perfil WWW
Re: Capturar el argumento del Main en una cadena?
« Respuesta #3 en: 9 Octubre 2010, 16:42 pm »

gracias por sus respuestas, lo que quiero hacer exactamente, es capturar el argumento, para poder pasarlo como argumento a otra aplicacion, considero que mi problema principal, es concatenar esa cadena del argumento con otro char[](disculpen mi ignoracia, pero de C no se mucho), creo que se puede concatenar con la funcion strcpy;

Lh: No hagas doble post, utiliza el botón modificar.

esto estoy intentando:
Código
  1. char* codigo;
  2.  
  3.    if(ARGC==1)
  4.    {
  5.        codigo=" /C java -cp EvSIG.jar -Xmx500M com.pronefa.sig.main.MainExe";
  6.  
  7.    } else {
  8.         codigo=" /C java -cp EvSIG.jar -Xmx500M com.pronefa.sig.main.MainExe";
  9.  
  10.         strcpy(codigo,argv[1]);
  11.  
  12.    }
  13.  
  14. ShellExecute(NULL,"open","cmd.exe",codigo,NULL,SW_HIDE);
  15.  


no corre, se me cuelga la app, creo q en strcpy esta el error;
« Última modificación: 9 Octubre 2010, 17:14 pm por Littlehorse » En línea

proyectos libres que desarrollo, si quieres colaborar, únete y hagamos un buen aporte.

http://guitarragnu.sourceforge.net/ (Software Educativo)
http://evsigmapserverj.sourceforge.net/ ( Software GIS, SIG, Mapserver)
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Capturar el argumento del Main en una cadena?
« Respuesta #4 en: 9 Octubre 2010, 17:35 pm »

Lo que te recomendaría es que primero leas sobre memoria dinámica y manejo de cadenas.
Las cadenas no se asignan, y antes de hacer una copia o una concatenación con ese puntero primero necesitas reservar memoria (malloc, por ejemplo)

Utiliza el buscador y encontraras varios ejemplos de ambas cosas. Igualmente tambien podes ver aca las funciones estándar para el manejo de cadenas y aca tenes un ejemplo de memoria dinámica con malloc.

Si no estas leyendo ningún libro, te recomiendo que busques alguno en el hilo que esta en las chinchetas.

Saludos
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: Capturar el argumento del Main en una cadena?
« Respuesta #5 en: 9 Octubre 2010, 22:03 pm »

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<string.h>
  4.  
  5. int main(int argc, char *argv[])
  6. {  
  7.    char cadena[100]="javaw -cp ExeJava.jar MainClassJava";
  8.    if(argc==1){
  9.        printf("No hay argumentos\n");
  10.        return 1;
  11.    }
  12.    sprintf(cadena, "%s %s", cadena, argv[1]);
  13.    system(cadena);
  14.    return 0;  
  15. }
En línea

joelmanx

Desconectado Desconectado

Mensajes: 38


programador java por si


Ver Perfil WWW
Re: Capturar el argumento del Main en una cadena?
« Respuesta #6 en: 10 Octubre 2010, 04:31 am »

muchas gracias pablomi, con esto ya logre hacer el lanzador para mi programa en java, y que ademas puedo pasarle los argumentos al mismo.
Código:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <shellapi.h>
#include <string.h>

int main(int ARGC,char *argv[])
{   
 int i;
 char codigo[500]=" /C javaw.exe -cp EvSIG.jar -Xmx500M com.MainExe";
;

    if(ARGC==1)
    {/**
    no tiene argumento*/ 
    } else {
      sprintf(codigo, "%s \"%s\"", codigo, argv[1]);
         printf(codigo);
    }   
   ShellExecute(NULL,"open","cmd.exe",codigo,NULL,SW_HIDE);
  return 0;

}
En línea

proyectos libres que desarrollo, si quieres colaborar, únete y hagamos un buen aporte.

http://guitarragnu.sourceforge.net/ (Software Educativo)
http://evsigmapserverj.sourceforge.net/ ( Software GIS, SIG, Mapserver)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Eliminar argumento de evento en netbeans
Java
.:UND3R:. 3 7,193 Último mensaje 29 Octubre 2013, 19:15 pm
por egyware
Meter en cadena argumento en C
Programación C/C++
JoseluCross 7 2,871 Último mensaje 29 Marzo 2016, 09:25 am
por LaiaxanIV
No me imprime esta cadena fuera de main
Programación C/C++
SebaC 5 2,336 Último mensaje 6 Mayo 2016, 22:09 pm
por geeke
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines