my variant, not use vla:
(defun f (l)
(cond ((= (caddr l) "") (strcat (cadr l) (car l)))
((wcmatch (caddr l) "@*") (f (list (strcat (car l) (substr (caddr l) 1 1)) (cadr l) (substr (caddr l) 2))))
((wcmatch (caddr l) "#*") (f (list (car l) (strcat (cadr l) (substr (caddr l) 1 1)) (substr (caddr l) 2))))
((strcat (cadr l) (car l) " " (f (list "" "" (substr (caddr l) 2)))))
)
)
Test function:
(defun c:test (/ s)
(setq s "FUSE A7 2A 24VDC")
(f (list "" "" s))
)