简单的C程序崩溃

时间:2016-11-08 01:41:30

标签: c

我的代码出了什么问题?显示板后它会崩溃。字符功能有什么问题吗?我已经仔细研究了这个问题至少一个小时,我仍然无法找出问题所在。

这是我的代码:

#include <stdio.h>

void gameboard(char board[8][8])
{

 int x, y;

  for(x=0; x<16; x++)
  {
   for(y=0; y<8; y++)
    {
    if(x % 2 == 0)
    {
    printf(" %c ", board[x][y]);
    }else{
    printf("| %c |",board[x][y]);
    }

  }printf("\n");

  }




}
void character(char board[8][8])
{
 int x,y;

 for(x=0;x<16;x++){
   for(y=0;y<8;y++){

    if(x<6){

       if(x%2 == 0){
              if(x%2 == 0){
              board[x][y] = ' ';

              }
             }



       if(x%2 == 1){
              if(y%2 == 0){
              board[x][y] = 'O';
               }
              if(y%2 ==1){
             board[x][y]= ' ';

              }
       }

      if(x==3){
         if(y%2 == 1){
         board[x][y] = 'O';
         }
         if(y%2 == 0){
         board[x][y] = ' ';
         }
        } 
    }

    if((x==6)||(x==7)||(x==8)||(x==9)){
    board[x][y] = ' ';
    } 


    if(x>9)
    {  

       if(x%2 == 0){
              if(x%2 == 0){
              board[x][y] = 'X';

              }
              if(y%2 == 0){
              board[x][y] = ' ';
             }

       }  

      if(x%2 == 1){
              if(y%2 == 1){
              board[x][y] = ' ';
               }

       }
        if(x==12){
         if(y%2 == 0){
         board[x][y] = 'X';
         }
         if(y%2 == 1){
         board[x][y] = ' ';
         }

       }  

    }               

  }
 }
}



int main()
{

  char bx[8][8];




  character(bx); 

  gameboard(bx);




 return 0;

}

1 个答案:

答案 0 :(得分:2)

你的董事会有8x8个元素:

char bx[8][8];

使用电路板执行操作时,可以访问x = 16的元素:

for(x=0;x<16;x++){
    ...
    board[x][y] = ' ';

因此,您访问board数组越界并覆盖其他不属于board的内存。如果该内存包含重要内容,您的程序可能会崩溃。