Casting char * a string?

Hola, quiero recoger como variables tipo cadena los parámetros pasados al ejecutable argv[1] y argv[2] pero me da un error de conversión de tipos.
El código es el siguiente:
-------Inicio--------
int main(int argc, char *argv[])
{
system("rundll32 printui.dll,PrintUIEntry /in /c\\\\" + argv[1] + "/n\\\\" + argv[2]);
}
---------Fin---------
¿Alguna idea?
Gracias
Respuesta
1
En C no se pueden 'sumar' cadenas de caracteres. Necesitarías hacer algo así:
int main(int argc,char *argv[])
{
char comando[256];
snprintf(comando,255,"rundll32 printui.dll,PrintUIEntry /in /c\\\\%s/n\\\\%s",argv[1],argv[2]);
system(comando)
}
El tamaño de la tabla comando es estimado. Depende de para qué lo vayas a usar (tiene que ser lo suficientemente grande para que entre el comando final).

2 respuestas más de otros expertos

Respuesta
1
Ese tipo de concatenación con + creo que no es permitida por C (lo he visto en Java); lo que puedes hacer es ir concatenando:
char *cad=strdup("rundll32 printui.dll,PrintUIEntry /in /c\\\\");
strcat(cad,argv[1]);
strcat(cad,argv[2]);
Respuesta
1
Intenta lo siguiente y me comentas si te funciona...
/*-----------inicio-----------*/
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
int main( int argc, char *argv[] )
{
char command[ SIZE ];
sprintf ( command, "rundll32 printui.dll,PrintUIEntry /in /c\\\\%s/n\\\\", argv[ 1 ], argv[ 2 ] );
system( command );
return 0;
} /* end of main() */
/*-----------fin-----------*/

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas