strcat (cadena y puntero) Urgente Por Favor

Angel Romero
31 de Marzo del 2004
Hola a todos!! Que tal estamos?? espero que bien

Tengo una pequeña duda, espero que me podais ayudar; tengo guardado en un puntero del tipo.... const char * cadena1 el nombre de un archivo, y, necesito crear una cadena completa de "NombreCarpeta/Nombre Archivo"; o sea...concatenar con strcat

Hasta ahi bien, y con dos cadenas definidas asi
char cadena1[10];
char cadena2[20];

funciona, pero...en mi caso no se como usar strcat con un puntero

const char * cadena1;

y...

char cadena2[20];

Es muy necesario para mi programa, les estaré muy agradecidos. Hasta otra.

Alejandro_
31 de Marzo del 2004
Observa la declaración de strcat:

char *strcat(char *dest, const char *src);


Está claro que "dest" no puede ser constante, para que pueda añadírsele "src". Además, deberás asegurarte que el tamaño de "dest" sea suficiente para albergar la cadena resultante.

Y por ejemplo, si:

char* nombreCarpeta = "C:\Proyectos\"; // 14 caracteres
const char* cadena1 = "miArchivo.txt";

nombreCadena es una cadena que aloja 14 caracteres, así que no será posible añadirle más. Observa el uso de "\" para indicar el carácter de barra invertida.
Para construir una cadena que contenga el nombre del path y el del archivo, tendrás que utilizar un nuevo array de caracteres:

char nuevo[MAXPATH];

/* MAXPATH está definido en dir.h e indica el número máximo de caracteres que puede tener un nombre completo de archivo (nombre + path) */

strcpy(nuevo, nombreCarpeta); // copiar a nuevo
strcat(nuevo, cadena1); // concatenar

//------------------------

Esto mismo en C++ podría ser:

string nuevo = nombreCarpeta; // crear nuevo inicializado
nuevo += cadena1; // concatenar

//----------------------------


Saludos,

Alejandro