>>86-87が失敗ソースなのですが

メッセージを出し、キーを入力させ
入力したキーを表示させます

もし入力されたキーがzなら終了
z以外なら再入力を促し
YないしyならYを表示→終了
NないしnならNを表示→終了
それ以外なら$を表示→終了

としたいのですが、どうも再入力を受け付けてくれません
この場合、変数を増やしてやるほかに方法は無いのでしょうか?
rewind (stdin);を入れてやれば、一応は解決したのですが
こうするとバッファデータが全部ロストするみたいなので、余り良くないんじゃないかなぁ・・・と

それとrewind (stdin);を入れて、再入力した場合
何を入れても$が表示されてします
復改というのでしょうか?
\nが混じるのが問題みたいなんですが
これを除去する良い方法はないのでしょうか?