System con parámetros
Hola
Necesito ejecutar un programa dentro de otro en C++.
Lo hago de la siguiente forma
system("C:\convert.exe a.bmp a.jpg");
Esto funciona, pero si por ejemplo kiero pasarle los nombres de los archivos como variables, no me sale como hacerlo. Me podeis decir en que estoy fallando?
char h[2] = "a";
h[2] = ' ';
char c[5] = ".bmp";
c [5]= ' ';
strcat(h,c);
char d[2] = "a";
d[2] = ' ';
char j[5] = ".jpg";
j [5]= ' ';
strcat(d,j);
char comando[100]="C:\convert.exe ";
strcat(comando,h);
strcat(comando," ");
strcat(comando,d);
system(comando);
A ver si alguien me puede ayudar!
GRacias
Pili
Necesito ejecutar un programa dentro de otro en C++.
Lo hago de la siguiente forma
system("C:\convert.exe a.bmp a.jpg");
Esto funciona, pero si por ejemplo kiero pasarle los nombres de los archivos como variables, no me sale como hacerlo. Me podeis decir en que estoy fallando?
char h[2] = "a";
h[2] = ' ';
char c[5] = ".bmp";
c [5]= ' ';
strcat(h,c);
char d[2] = "a";
d[2] = ' ';
char j[5] = ".jpg";
j [5]= ' ';
strcat(d,j);
char comando[100]="C:\convert.exe ";
strcat(comando,h);
strcat(comando," ");
strcat(comando,d);
system(comando);
A ver si alguien me puede ayudar!
GRacias
Pili
El error se encuentra en la forma como asigna los valores a las cadenas de caracteres, resulta que en c++ no se le puede asignar valores a una cadena de caracteres por medio del signo igual " = ", a menos que se ubiese creado una clase y sobrecargado el operador de asignación.
Lo que si se puede hacer es asignar un solo caracter a una posicion de la cadena, por ejemplo donde usted hace char h[2] = "a"; esto lo que aria es asignar el caracter "a" a la posición 2 de la cadena "h", pero aun asi tiene un error y es que como lo que asigna es un caracter debería estar entre comillas sencillas, osea:
char h[2] = 'a';.
Bueno ahora a la solución:
*Primero, cuando vaya a colocar un valor por primera vez en una cadena utilice la funcion strcpy(destino,fuente); la cual copia la cadena fuente a la cadena de destino. Por ejemplo:
codigo incorrecto:
char c[5] = ".bmp";
c [5]= ' ';
Codigo correcto:
char c[5] ;
strcpy(c,".bmp");
*Segundo, usted tiene otro error y es que le concatena a una cadena otra de que excede la cantidad posiciones que tiene la cadena destino, ose cuando hace:
strcat(h,c);
Le esta concatenado c a h, pero resulta que h solo puede tener 2 caracteres y c tiene ya 4.
*Tercero, otro error se encuentra en la forma como usted interpreta la posiciones del arreglo de caracteres, por ejemplo usted tiene char h[2] = "a";, bueno ya dije el primer error que tiene esta expresión, pero otro es que usted tiene un arreglo de 2 dimensiones y usted esta accediendo a la posición 2, en c++ se debe tener presente que las posiciones de los arreglos empiezan en cero y terminan en n-1, osea la posicion 2 de este arreglo sería h[1], y a primera h[0].
Nota: cuando usted asigne cadenas utilizando strcpy(); no es necesarío que coloque el caracter nulo al final de cada cadena ya que la función lo hace. SUERTE.
Lo que si se puede hacer es asignar un solo caracter a una posicion de la cadena, por ejemplo donde usted hace char h[2] = "a"; esto lo que aria es asignar el caracter "a" a la posición 2 de la cadena "h", pero aun asi tiene un error y es que como lo que asigna es un caracter debería estar entre comillas sencillas, osea:
char h[2] = 'a';.
Bueno ahora a la solución:
*Primero, cuando vaya a colocar un valor por primera vez en una cadena utilice la funcion strcpy(destino,fuente); la cual copia la cadena fuente a la cadena de destino. Por ejemplo:
codigo incorrecto:
char c[5] = ".bmp";
c [5]= ' ';
Codigo correcto:
char c[5] ;
strcpy(c,".bmp");
*Segundo, usted tiene otro error y es que le concatena a una cadena otra de que excede la cantidad posiciones que tiene la cadena destino, ose cuando hace:
strcat(h,c);
Le esta concatenado c a h, pero resulta que h solo puede tener 2 caracteres y c tiene ya 4.
*Tercero, otro error se encuentra en la forma como usted interpreta la posiciones del arreglo de caracteres, por ejemplo usted tiene char h[2] = "a";, bueno ya dije el primer error que tiene esta expresión, pero otro es que usted tiene un arreglo de 2 dimensiones y usted esta accediendo a la posición 2, en c++ se debe tener presente que las posiciones de los arreglos empiezan en cero y terminan en n-1, osea la posicion 2 de este arreglo sería h[1], y a primera h[0].
Nota: cuando usted asigne cadenas utilizando strcpy(); no es necesarío que coloque el caracter nulo al final de cada cadena ya que la función lo hace. SUERTE.
