Возвращение строки из функции в C

У меня есть функция c, которую я хочу вернуть строку.

Если я распечатаю строку до ее возвращения, я вижу croc_data_0186.idx

Если я попытаюсь напечатать возвращаемую строку, я увижу croc_data_á☼

Кто-нибудь может увидеть, что я делаю не так?

Проблемная функция:

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;
}

Телефонный код:

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);

    ...
}

Ответы на вопрос(7)

Ваш ответ на вопрос