どうしてもやりたいなら、 match_infoの配列ではなく、
match_infoのポインタの配列を使う。

 match_info **info;

 info=(match_info **)malloc((line_cnt+1) * (sizeof(match_info *)));
 for(i=0;i<line_cnt;i++)
  info[i]=(match_info *)malloc(sizeof(match_info));
 info[line_cnt]=NULL;

こうすれば出来るけど、当然一個一個freeする手間がかかる。