Muito obrigado pelo feedback. Não conhecia esse detalhe do fgets
que você mencionou.
Achei interessante essa sua versão do código e com certeza seria algo que eu usaria em um caso real. Mas no meu post, eu quis deixar o mais simples possível, sem alocação de memória ou funções do header string, apenas um algoritmo para alguém que teve pouco ou nenhum contato poder entender.
De todo modo, é interessante ter uma visão mais concreta de um caso de uso. Obrigado pelo seu comentário.