Il doppio backslash devi usarlo solo nelle costanti tra virgolette. In memoria è comunque un solo carattere.
Se non devi usare l'allocazione dinamica come mai la funzione utilizza dei puntatori a char per le due stringhe risultato? Sono forse allocate esternamente nel main? Allora dovranno essere dichiarate con
char pathname[MAX_PATH];
char filename[MAX_PATH];
e passerai pathname e filename alla funzione (oltre alla stringa da esaminare).