scanf("%d",&nDate);
ここの nDate は関数内で宣言した適当な自動変数にしないといけないでしょ?
nDateを上書きしているから、nDate--;で要素数が今消した所-1になってると思われ。
そのため表示するときに指定した行以下が全て消えたように見える。
実際にはコピーはされている。

あと、scanf("%s",&ans); のところは &ans[0] か、ans のみ ans はそれだけでは ans配列の
アドレスを意味している。そしてそのアドレスの先頭にあるのがans[0]で、
ans と &ans[0] が等価だ。

あとはいいんじゃないかと思った。けど自信なし。