我的代码出了什么问题?显示板后它会崩溃。字符功能有什么问题吗?我已经仔细研究了这个问题至少一个小时,我仍然无法找出问题所在。
这是我的代码:
#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;
}
答案 0 :(得分:2)
你的董事会有8x8个元素:
char bx[8][8];
使用电路板执行操作时,可以访问x = 16的元素:
for(x=0;x<16;x++){
...
board[x][y] = ' ';
因此,您访问board
数组越界并覆盖其他不属于board
的内存。如果该内存包含重要内容,您的程序可能会崩溃。