strcat (cadena y puntero) Urgente Por Favor
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.
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.
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
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
