Volver una cadena de una función en C

Tengo una función c que quiero devolver una cadena.

Si imprimo la cadena antes de que se devuelva, veo croc_data_0186.idx

Si intento imprimir la cadena que se devuelve, veo croc_data_á☼

¿Alguien puede ver lo que estoy haciendo mal?

Función de problema:

char* getSegmentFileName(FILE *file, int lineLength, int lineNumber)
{
    char* fileNameString;

    fseek(file, lineNumber * lineLength, SEEK_SET);

    char line[lineLength];
    fgets(line, lineLength, file);

    char *lineElements[3];
    lineElements[0] = strtok(line, ":");
    lineElements[1] = strtok(NULL, ":");
    lineElements[2] = strtok(NULL, ":");

    fileNameString = lineElements[2];

    printf ("getSegmentFileName fileNameString is: %s \r\n", fileNameString);

    return fileNameString;
}

Código de llamada:

int indexSearch(FILE *file, char* value, int low, int high, char* segmentFileName)
{
    ...

    segmentFileName = getSegmentFileName(file, lineLength, mid);
    printf ("indexSearch: segmentFilename3 is: %s \r\n", segmentFileName);

    ...
}

Respuestas a la pregunta(14)

Su respuesta a la pregunta