У вас есть проблема в вашем последнем for
, которая никогда не выполнит его тело, потому что вы начинаете с lenght
до mid
, но тестируете, пока оно меньше mid
, чтоникогда не верно.
Измените его на:
for (i = lenght; i >= mid; --i)
... и убедитесь, что вы включили mid
, иначе средний символ не будет отображаться.
Также обратите внимание, что вам не нужно считать в обратном порядке в этом цикле, что является причиной ошибки. Вы можете сделать:
for (i = mid; i < lenght; i++)
Наконец, как заметил @Blaze в своем ответе , вы должны заполнить right
с правильным смещением на , вычитая mid
из индекса i
:
right[i-mid] = ...