>364
ダメ。変数の寿命について学んでください。

1.関数の引数を変える。
void dirname(char *dest,int dest_size,const char *path)

2.静的に保持する。使用に若干注意が加わる
static char dir[]

3.動的に確保する。呼び出し側に解放義務が発生する
char *dir = malloc()