どうでもいいけど、
char name[NUM * 2 + 1] = "";

普通こうじゃね?

char name[NUM * 2 + 1] = {'??0'};

これでも良い

コンパイル結果はたぶん全部同じだけど