回答編集履歴
2
指摘に対する修正
    
        answer	
    CHANGED
    
    | 
         @@ -6,7 +6,6 @@ 
     | 
|
| 
       6 
6 
     | 
    
         
             
            なので、「banを使ってprintf」する処理をループ内に埋め込めば、解決するでしょう。
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            後、とりあえず気になった点を。
         
     | 
| 
       9 
     | 
    
         
            -
            ・ban配列の初期化ですが、[0]番目しか0クリアされないかと。(処理内でmemsetとかでクリアのほうがよさげ)
         
     | 
| 
       10 
9 
     | 
    
         
             
            ・while(1)をdo~whileにして、終了条件をkey=='\n'にしたほうがいいかと。(無限ループは多用しないほうがいい。)
         
     | 
| 
       11 
10 
     | 
    
         
             
            ・xを位置を求める際に使用している方法「-」なのに、右方向が「+」なのは逆ではないですか?
         
     | 
| 
       12 
11 
     | 
    
         
             
            ・x,yが上限下限を超える際の処理が入っていない。
         
     | 
1
必ずではなかったですね、すいません。
    
        answer	
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            このコードだと毎ループx,yに0クリアとmoveかけてるから、0,0にカーソルが戻るのは正常?ですね。
         
     | 
| 
       2 
     | 
    
         
            -
            となると、問題はbanに書き込みが行われないか反映されていないという事になりますが、banへの書き込みはcheck関数内で 
     | 
| 
      
 2 
     | 
    
         
            +
            となると、問題はbanに書き込みが行われないか反映されていないという事になりますが、正常値を与えればbanへの書き込みはcheck関数内で通るようになっています。
         
     | 
| 
       3 
3 
     | 
    
         
             
            なので、反映されないというのが問題点になるのですが、そこに焦点を当てて追ってみると「banを使ってprintfしているのが、ループ突入前しかない」事がわかります。
         
     | 
| 
       4 
4 
     | 
    
         
             
            つまり、せっかく変数を書き換えたのに、それを使っていないわけです。
         
     | 
| 
       5 
5 
     | 
    
         |