Я не скомпилировал и не запустил код, но я думаю, что проблема в вашем счетчике строк:
while (fgets(buff_line, LINE_SIZE, fptr))
if (!(strlen(buff_line) == LINE_SIZE-1 && buff_line[LINE_SIZE-2] != '\n'))
nLines++;
То, что вы здесь говорите, если «длина строки buff_line не равнаLINE_SIZE -1 и символ в buff_line [LINE_SIZE-1] не равен '\ n' ", инкремент nLines.
Итак ... всякий раз, когда вы читаете строку из вашего текстового файла, которая заканчивается на '\ n ', и эта строка длиной 127 символов, вы не собираетесь увеличивать nLines.Вы используете Malloc пробелы для nLines, но вы, вероятно, будете читать больше, чем nLines данных из вашего файла ... в этот момент вы записываете в ** результат больше, чем вы выделили, и произойдут плохие вещи.