Есть 3 способа решить эту проблему
1) Сделать 'fileNameString' статическим
static char fileNameString[100];
2) Вызывающий функцию 'getSegmentFileName' должен передать символьный буфер'gmentFileName 'вызываемому, т.е.
getSegmentFileName(file, lineLength, mid, segmentFileName);
В этом случае вам нужно изменить аргументы функции
char* getSegmentFileName(FILE *file, int lineLength, int lineNumber, char *segmentFileName) {
.....
strcpy(segmentFileName, fileNameString); // copying the local variable 'fileNameString' to the function argument
// so that it wont be lost when the function is exited.
return fileNameString; // there is no need to return anything and you can make this function void
// in order not to alter ur program I am putting the return also
}
3) Таким образом, вы можете динамически распределять память для fileNameString. Динамическая память выделяется в куче, и она не будет потеряна при возврате функции. Таким образом, вы можете безопасно использовать его в функции indexSearch.
char* getSegmentFileName(FILE *file, int lineLength, int lineNumber)
{
char *fileNameString = (char *)malloc(100 * sizeof(char)); // allocate memory for 100 character string
.....
return fileNameString;
}
В этом случае вам нужно освободить память, указанную fileNameString, используя free