Вы удаляете \n
из строки, перезаписывая его \0
, но ваш length
расчет сделан до этого изменения.
Чтобы это исправить, выполните
line[i-1]=line[i];
, прежде чем вычислять длину.
Поскольку ваша length
на единицу больше, чем фактическая длина, \0
также участвует в сортировке символа и, посколькуНаименьший из всех символов, он помещается в начало строки, фактически делая вашу строку пустой.