Точно так же, как сказал @Zen, SEGFAULT
произойдет, если вы попытаетесь получить доступ к области памяти, которой вам не разрешено или не выделено.
Ваша программа завершает работу сразу после первой итерации, потому что i
становится 1
в этот момент, а text[1]
становится недоступным, потому что text
был выделен размер только одного символа: char *text = malloc(sizeof(char));
здесь.
Тем не менее, я не проверял ваш алгоритм сейчас, поэтому я Я только предоставляю начальное наблюдение. Если какие-либо ошибки все еще появляются, не стесняйтесь размещать сообщения в этой теме здесь.
Best.