Capturar el argumento del Main en una cadena?

Iniciado por joelmanx, 9 Octubre 2010, 07:39 AM

0 Miembros y 1 Visitante están viendo este tema.

joelmanx

hola a todos quiero que me ayuden por favor, a capturar el argumento, que recibe el metodo main, para poder trabajar con el.
#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?
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

¡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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Eternal Idol

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

#3
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:
char* codigo;

    if(ARGC==1)
    {
        codigo=" /C java -cp EvSIG.jar -Xmx500M com.pronefa.sig.main.MainExe";
     
    } else {
         codigo=" /C java -cp EvSIG.jar -Xmx500M com.pronefa.sig.main.MainExe";

         strcpy(codigo,argv[1]);

    }

ShellExecute(NULL,"open","cmd.exe",codigo,NULL,SW_HIDE);



no corre, se me cuelga la app, creo q en strcpy esta el error;
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

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
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

xassiz~

#include <stdio.h>
#include <stdlib.h>
#include<string.h>

int main(int argc, char *argv[])

    char cadena[100]="javaw -cp ExeJava.jar MainClassJava";
    if(argc==1){
        printf("No hay argumentos\n");
        return 1;
    }
    sprintf(cadena, "%s %s", cadena, argv[1]);
    system(cadena);
    return 0; 
}

joelmanx

muchas gracias pablomi, con esto ya logre hacer el lanzador para mi programa en java, y que ademas puedo pasarle los argumentos al mismo.
#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;

}
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)