char ary[5][10] = {0};
これではダメだろう。関数側で書き込む領域まで大きめにメモリ確保しないと。
自分もだが、こういう基礎レベルで迷う場合はC++を使った方がいい。
vector<string>型なら簡単。