レスどうもです。

> scanf("%d",&nDate); // nDate を上書きして良いのか?
データ拡張の際に
scanf("%s",date[nDate].name);
ということをやっていたのでこれは大丈夫だと思います。

> scanf("%s",&ans); // エラーは出ないのか?
これは大丈夫です。

> if(ans=='y'){ // 何と 'y' を比べてる?
これは'y'を入力するとこのif文を実行するという意味です。

> for(i=nDate;i<nDate-i;i++){ // 初期値が nDate なので nDate-i は 0
とりあえずいろいろ試し、
データをいじりまくってたんですが、
間違いを修正し忘れたまま書き込んだようです。

最初は
for(i=0;i<nDate;i++)
という表記でした。
因みにこのfor文がさっぱりわからないです。