Testowałeś w ogóle te funkcje?
konwersja_do_10: skąd założenie, że wejściowa tablica ma 14 znaków? Nie sądzisz, ze bardziej adekwatna byłaby odpowiednia pętla while?
konwersja_do_16:
Przede wszystkim: zwracasz lokalną tablice. Nie możesz tak robić. Tablica zostanie zniszczona po wyjściu z funkcji a zwrócony wskaźnik będzie wskazywał na nieprawidłowe dane.
Po drugie - znowu nie wiadomo skąd ta 14. Tutaj jednak już to nie jest aż tak szkodliwe - po prostu niepotrzebne. Widze, że kończysz pętle kiedy któreś z kolei dzielenie przez 16 da 0. Ok, tylko zauważ, że pozostałe komórki tablicy (zakładam przypadek kiedy nie wykonało się wszystkich 15 iteracji) pozostają z nieokreśloną wartością (śmieci). Dodatkowo nie stawiasz na końcu tablicy zera (wymóg prawidłowego printowania c-stringów).
Kolejna sprawa to scanf-y. Wyrzuć ampersandy (&). Nazwa tablicy już jest wskaźnikiem dokładnie na tą pamięć do której scanf ma wpisywać. Ampersandem pobierasz wskaźnik do pamięci w której przetrzymywany jest ten wskaźnik (na twoją tablice) - nie powinno cie to obchodzić :P Cud, że się nie wykrzacza.
To chyba tyle, co byłem w stanie zauważyć.