Problema con strcat en ANSI C
Bueno, mi problema es el siguiente.
A un método le tengo que pasar un nombre de directorio en UNIX (tipo /home/ ....) pero no acabado en '/' porque si no al hacer un opndir fallaría.
El nombre del directorio que le paso a mi método es una matrix de 255 de tipo char, y me decido por hacer una copia con strcpy en otra variable de exactamente el mismo tipo, y, una vez hecho esto, cioncatenarle el carácter '/' para tener una cadena sencillla para poder concatenar nombres de archivo y poder acceder así a ellos.
Pues hasta aquí todo perfecto, pero cuando ejecuto el programa y llega a la línea del strcat(nombreDirectorio,"/") ..... EXACTO: Violación de segmento .... me estoy volviendo loco porque haciendoun programa de prueba que solo hace eso y muestra la cadena antes y después de concatenarle una / funciona perectamente!!!!
Alguien me puede ayudar???
A un método le tengo que pasar un nombre de directorio en UNIX (tipo /home/ ....) pero no acabado en '/' porque si no al hacer un opndir fallaría.
El nombre del directorio que le paso a mi método es una matrix de 255 de tipo char, y me decido por hacer una copia con strcpy en otra variable de exactamente el mismo tipo, y, una vez hecho esto, cioncatenarle el carácter '/' para tener una cadena sencillla para poder concatenar nombres de archivo y poder acceder así a ellos.
Pues hasta aquí todo perfecto, pero cuando ejecuto el programa y llega a la línea del strcat(nombreDirectorio,"/") ..... EXACTO: Violación de segmento .... me estoy volviendo loco porque haciendoun programa de prueba que solo hace eso y muestra la cadena antes y después de concatenarle una / funciona perectamente!!!!
Alguien me puede ayudar???
El problema que tienes consiste en que has reservado estáticamente memoria para una serie de caracteres... pongámosle X al hacer strcpy.
Y lo que estás haciendo es intentar concatenar como caracter X+1 el carácter '/' que probablemente sea una posición reservada (De ahí la violación del Segmento).
Consejo...
En lugar de un array de caracteres usa un char *
le reservas memoria suficiente con malloc...
si fuera necesario reservarle más memoria luego, usas realloc...
Y finalmente sobre ese char * aplicas strcat...
No te va a fallar.
Saludos.
Y lo que estás haciendo es intentar concatenar como caracter X+1 el carácter '/' que probablemente sea una posición reservada (De ahí la violación del Segmento).
Consejo...
En lugar de un array de caracteres usa un char *
le reservas memoria suficiente con malloc...
si fuera necesario reservarle más memoria luego, usas realloc...
Y finalmente sobre ese char * aplicas strcat...
No te va a fallar.
Saludos.
Hola. Yo tuve también un problema muy extraño, que si intentaba reproducirlo en un fichero de prueba no lo conseguía. Al final, me di cuenta de que el origen era un malloc al que llamaba en una función anterior y reservaba menos memoria de la que debería. En vez de darme un error de violación de segmento en su momento el error se manifestaba más adelante en una instrucción sin fallos. Mira a ver si los malloc que usas antes están correctos.
Un saludo.
Un saludo.
