为什么我的2D阵列中没有更新我的位置

  • 本文关键字:位置 更新 2D 阵列 c
  • 更新时间 :
  • 英文 :


我正在尝试更新放置p标记的2D数组中的玩家位置。当我为行运行put 4,为列编号运行put 4时,它看起来不像是用我的标记板功能保存的。感谢任何帮助或提示。我是C编程的新手。

#include <stdio.h>
#include <stdlib.h>
//function declaration here
//draw board function- it draws the board
char board[6][6] = {
{'0','0','0','0','0','0'},
{'0','0','0','0','0','0'},
{'0','0','0','0','0','0'},
{'0','0','0','0','0','0'},
{'0','0','0','0','0','0'},
{'0','0','0','0','0','0'}
};
void draw_board();
//mark board
char mark_board(int row_num, int column_num);
//main program
int main()
{
//draw_board();
int row_number;
int column_number;
printf("Which starting point you like to occupy?n");
printf("row number: ");
int player_row = scanf("%d", &row_number);
printf("column number: ");
int player_column = scanf("%d", &column_number);
mark_board(player_row,player_column);

draw_board();
return 0;
}
//function definition here
void draw_board()
{
printf("   1 2 3 4 5 6n");
printf("   -----------n");
for (int i = 0; i < 6; i++)// rows number
{
printf("%i| ", i + 1);
for (int j = 0; j < 6; j++)
{
printf("%c ", board[i][j]);
}
printf("n");
} 
}
char mark_board(int row_num, int column_num)
{
int i,j;
char mark = 'P';
for (i = 1; i < 7; i++)// rows number
{
for (j = 0; j < 6; j++) //column number
{
board[row_num - 1][column_num - 1] = mark;
}
} 
return board[i][j];
}

以下是我的输出:在此处输入图像描述

main()函数中,您将scanf()的结果分配给player_rowplayer_column,考虑到输入是正确的,它总是1,因为您从键盘上得到了1整数。这应该有效:

int main(void)
{
//draw_board();
int row_number;
int column_number;
printf("Which starting point you like to occupy?n");
printf("row number: ");
if (scanf("%d", &row_number)!=1)
{
return -1;
}
printf("column number: ");
if (scanf("%d", &column_number)!=1) //Checking the return value of scanf
{
return -1;
}
mark_board(row_number,column_number);

draw_board();
return 0;
}

您还应该考虑验证输入的范围,您不希望索引超出数组的范围,即UB

最新更新