es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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;
}
Tags:  ,

Answer

  1. Avatar for 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 de cad. También es posible que haya un problema con los parámetros ini y fin, 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.

Comments are closed.