>>329
察しの通り、文字列の操作部分が怪しい。

(1) int str[MAXDATA][64]; → char str[MAXDATA][64]; じゃないか?
(2) 配列の初期化されていない部分を参照しているので適当な値で初期化するか、
  終端フラグをもうけるか、ソート範囲を有効なデータの範囲だけにすること。
(3) (1) と仮定して str は「大きさ64の文字列の配列」なので Insertion_sort の引数を
  void Insertion_sort(int num[] , char str[][64] , int data) とする。
(4) この場合、ソートする際は文字列の実体を strcpy 等でコピーする。