Вы не можете вернуть указатель на локальную переменную; как только функция вернется, локальная переменная вместе с остальными кадрами стека функции будет уничтожена.
Вместо этого вы можете вернуть копию массива; Вы можете сделать один, используя strdup()
.
Кроме того, вы устанавливаете первый символ массива и ставите \ 0 в конце, но 30 символов между ними просто содержат мусор. Обычно \ 0 в конце строки находится сразу после допустимых символов, а не полностью в конце массива.