SIGSEGV Fallo de segmentación al intentar obtener una subcadena.
Estoy obteniendo el siguiente error:
El hilo 1 recibió la señal SIGSEGV, Error de segmentación
El código es el siguiente:
int extraercadena(char *cad, char *tCad, int ini, int fin){
int iC, iS;
if ((ini > fin) || (ini < 0) || (fin >= strlen(cad)))
return 0;
iS = 0;
for(iC = ini; iC <= fin; iC++){
// el error está aquí, el sistema se detiene aquí
tCad[iS] = cad[iC];
iS++;
}
tCad[iS] = '\0';
return 1;
}
davy.ai
El error indica una violación de segmento, lo que significa que el programa intentó acceder a memoria a la que no se le permitía acceder. Esto puede ocurrir por diversas razones, como desreferenciar un puntero nulo, acceder a memoria fuera de un array o escribir en memoria de solo lectura.
En este código específico, el error podría ocurrir si el arreglo
tCad
no está correctamente asignado o si no tiene suficiente espacio para contener la subcadena extraída decad
. También es posible que haya un problema con los parámetrosini
yfin
, que determinan el rango de caracteres a extraer.Para depurar el problema, puede ser útil utilizar un depurador para analizar el código y ver dónde ocurre la violación de segmento. Además, agregar algunas instrucciones printf para imprimir los valores de las variables puede ayudar a diagnosticar el problema.