Per il primo problema penso che basti aggiungere un'istruzione in testa al programma:

codice:
#include <stdlib.h>
vale a dire l'header della malloc.

Per il secondo problema devi sapere che tu con questa istruzione

codice:
Name[strlen(Name)-4]
hai passato un carattere alla funzione strcat, mentre volevi passare l'indirizzo di quel carattere all'interno della stringa.
Per risolvere il problema basta che usi l'operatore trova-indirizzo &, l'istruzione corretta è

codice:
strcat(&Name[strlen(Name)-4],DBF_EXTENSION);
Dimenticavo, la strcat concatena solo stringhe, quindi non funzionerà se DBF_EXTENSION è un carattere.
In questo caso devi creare una stringa che contiene solo quel carattere e passarglielo