Hola gente. Tengo un lio con el uso de String y char* que nose como resolver. Os comento.
Tengo un programa en c++ que lo que hace inicialmente es obtener el valor de la variable de entorno $HOME(contiene la ruta del directorio home de un usuario en linux).
Esto lo hago con:
char * ruta;
ruta=getEnv("HOME");
Este programa se ejecuta con dos argumentos asi que yo lo quier obtener es para que os hagais una idea la cadena:
$HOME/$1/$2
Es decir, concatenar el directorio HOME del usuario cuyo valor obtengo en la variable "ruta" con los dos parametros que me pasa el usuario al ejecutar el programa.
Entonces yo estaba haciendo:
strcat(ruta, argv[1]);
strcat(ruta,"/");
strcat(ruta,argv[2]).
El problema es que cuando imprimo el valor final de la variable "ruta" me salta una ventana de windows diciendome que no se puede escribir en memoria. Supongo que es que al inicializar la variable ruta con el valor de la variable de entorno HOME ya no hay mas espacio libre en esa variable y todo lo que estoy concatenando se está saliendo de su rango de memoria..........
Entonces probé a reservar mas memoria haciendo:
char * ruta;
ruta=getEnv("HOME");
int n=strlen(argv[1])+strlen(argv[2])+strlen(ruta);
char * final[n];
strcat(final,ruta);
strcat(final,"/");
strcat(final,argv[1]);
strcat(final,"/");
strcat(final,argv[2]);
Pero el compilador se queja en la linea de :
strcat(final,ruta);
Alguna idea de concatenar estas cadenas???
Saludos.