Вместо того, чтобы прислушаться к совету Сабли, ты начинаешь строить из себя умника. А "алгоритм" как-раз и дерьмовый

И это твое поделие показывает:
1. Что ты не знаешь, что строка заканчивается нулем.
2. Что такое переполнение буфера ты тоже не в курсе.
3. Понятия оптимальности и временной сложности для тебя пустой звук, иначе ты бы не дергал вывод в цикле.
4. Что память неплохо-бы освобождать за собой тебе тоже никто не сказал.