This:
char *result;
создаст неинициализированный указатель, указывающий на неопределенное местоположение. Это не создает строку. Следовательно, обращение к нему с помощью result[idx++]
вызывает неопределенное поведение.
В тех случаях, когда вы просто хотите использовать строку локально, лучше всего создать буфер символов фиксированного размера:
char result[80];
И вы должны убедиться, что никогда не пишете за пределами 80 символов, оставляя место для нулевого символа в конце строки.
Это только быстрое решение вашей непосредственной проблемы. Вы должны изучить массивы, строки C, указатели и распределение памяти, чтобы узнать больше о том, как эти вещи работают в C.