В DecBin() 2 ошибки:
1. Вы заполняете строку с конца, а нужно с начала. Обратите внимание на вывод 173 (если не брать во внимание мусорный хвост, о котором в п.2) - ответ правильный, только записанный наоборот.
2.После преобразования нужно добавить завершающий 0, т.к. на выходе у вас Си строка. Соответственно памяти нужно выделять на 1 байт больше необходимого. Из-за отсутствия завершающего нуля вывод не заканчивается в конце вашего буфера, а продолжает выводить содержимое памяти после буфера, пока не встретит нулевой байт, отсюда и мусор в конце.
Можно и не добавлять нулевой байт, но в этом случае не нужно относится к возвращаемому DecBin() указателю как к строке, а работать с ним как с массивом байт. Т.е. выводить строго заданное количество байт.