计算二维网格 C 中的字符数

Count number of char in a 2D grid C

我正在尝试使用 2 个 for 循环计算二维网格中有多少个字符。代码如下所示:

int number_of_boxes( int player, int height, int width, char**gameBoard ){
 int boxCount, i , a;
  for(i=0; i < (height*2) + 1 ; i++){
   for ( a = 0 ; a < (width * 2) + 1 ; a++){
      if(gameBoard[i][a] == (char)(player + 64)) boxCount++;
   }
  }
 return boxCount;
}

player 变量是每个玩家的索引,但在网格中它们显示 ASCII 字符。

1 = A,2 = B 等等,方法是将 64 添加到索引并将其视为 charif 状态旨在检查数组数组中的每个字符的 ASCII 字符,如果找到一个实例则将其添加到计数器中。

出于某种原因,此函数中的 if 语句传递了太多次,当唯一可能的最大值为 [=18 时,函数返回 122120 =].我的 if 说法错了吗?

你还没有初始化boxCount。

 int boxCount, i , a;

因此 boxCount 当前存储了一些垃圾值。我认为这就是为什么您假设 if 语句运行许多 times.Try 初始化 boxCount.

  int boxCount=0, i , a;

您错过了 boxCount 的初始化:

替换

int boxCount, i , a;

int boxCount=0, i , a;

因为递增未初始化的值是未定义