char filename2[19][MAX_SIZE];
で宣言していたのを
char filename2[20][MAX_SIZE];
で宣言すると解決しました。

配列は0から始まるので20個使いたいときは[19]で宣言すればいいのではないんでしょうか?