C 扫描矩阵数组并将其发送给函数?

C 扫描矩阵数组并将其发送给函数?,c,C,我正在尝试使get_move()以xy坐标扫描玩家1或玩家2在矩阵上的移动 get_move()将有两个参数。第一个是两个玩家中的哪一个正在移动(玩家1或玩家2)。第二个参数是move,它必须是一个数组 我不明白的是,我应该如何从main函数扫描move,然后将其作为参数发送到get_move()。我的意思是get_move()将扫描移动,但是get_move()中的一个参数将是扫描的xy坐标数组 #include <stdio.h> void get_move(int playe

我正在尝试使get_move()以xy坐标扫描玩家1或玩家2在矩阵上的移动

get_move()将有两个参数。第一个是两个玩家中的哪一个正在移动(玩家1或玩家2)。第二个参数是move,它必须是一个数组

我不明白的是,我应该如何从main函数扫描move,然后将其作为参数发送到get_move()。我的意思是get_move()将扫描移动,但是get_move()中的一个参数将是扫描的xy坐标数组

#include <stdio.h>

void get_move(int player, char input[])
{

    printf("Player %d, make your move: ");
    scanf("%d %d", &input[][]);

}



int main(void)
{

    int player = 1;

    get_move(player, ???); // I can't scan the coordinates and insert them as the second parameter, because the function is supposed to make the scan???

    getchar();

    return 0;
}
#包括
void get_move(整数播放器,字符输入[])
{
printf(“玩家%d,开始行动:”);
scanf(“%d%d”,&input[]);
}
内部主(空)
{
int player=1;
get_move(player,?);//我无法扫描坐标并将其作为第二个参数插入,因为函数应该进行扫描???
getchar();
返回0;
}
对不起,我粗心了

让我们假设
input[0]
是x,
input[1]
是y

因此,在主要功能中:

     int main(void)
     {
         int td[2], player = 1;

         get_move(player, td);

         return 0;
     }
get\u move(int player,int*td)


  • 你应该定义一个结构(更好的数据结构可以降低编码的复杂性)

  • 现在可以将此结构传递给函数
    get\u move()
    ,例如:

    void get_move(int player, two_dim td)
    {
        printf("Player %d, make your move: ", player);
        scanf("%d %d", &td.x, &td.y); 
        // more operations.
    }
    
    int main(void)
    {
         int player = 1;
    
         two_dim td;
         get_move(player, td);
    
         return 0;
    }
    
  • 更多的,我认为你应该弄清楚参数和参数(或者形式参数和实际参数)


  • 您提供的示例代码存在一些问题。让我们来看看它们中的每一个,一次一个:

    • 分配一个空间来保持玩家的移动。由于有两名玩家,移动将是(x,y)坐标,因此需要一个2x2阵列。您还需要决定数组的数据类型。由于有关于游戏区大小的信息,我选择了
      int
    int输入[2][2];
    
    • 根据输入数组的数据类型调整
      scanf
      的格式字符串。如果使用
      int
      作为数据类型,则可以使用
      %d
      作为
      scanf
      中的格式字符串。如果改用字符,请使用
      %c
      作为格式字符串。有关格式字符串的更多信息,请参阅

    • 请注意如何声明数组以及如何使用它们。请注意,我如何在
      scanf
      中的数组
      input
      后面不使用空括号。将其与您的
      scanf
      行进行比较。可以在函数签名中使用空括号(例如
      get\u move(…)
      )将现有数组传递给函数。在这种情况下,当您想要告诉scanf将x和y坐标放入数组时,需要向scanf函数传递两个指针。
      &
      运算符为您提供指向其前面变量的指针。这里的
      input[0]
      intput[1]
      是我们感兴趣的指针所在的变量

    scanf(“%d%d”、&input[0]、&input[1]);
    
    固定代码

        #include <stdio.h>
    
        void get_move(int player, int input[]) {
            char temp = 0;
    
            printf("Player %i\'s move? ", player);
            scanf("%d %d", &input[0], &input[1]);
    
            // capture the user pressing the return key, which creates a newline
            scanf("%c", &temp);
        }
    
        int main() {
            int input[2][2];
    
            int i;                  // index into the player array
    
            // read players' moves
            for (i = 0; i < 2; i++) {
                get_move(i, input[i]);
            }
    
            // print players' moves
            for (i = 0; i < 2; i++) {
                printf("player %i: %d %d\n", i, input[i][0], input[i][1]);
            }
        }
    
    #包括
    void get_move(整数播放器,整数输入[]){
    字符温度=0;
    printf(“玩家%i的移动?”,玩家);
    scanf(“%d%d”、&input[0]、&input[1]);
    //捕获用户按return键,这将创建一个换行符
    scanf(“%c”、&temp);
    }
    int main(){
    整数输入[2][2];
    int i;//索引到播放器数组中
    //看球员的动作
    对于(i=0;i<2;i++){
    获取移动(i,输入[i]);
    }
    //打印玩家的动作
    对于(i=0;i<2;i++){
    printf(“播放器%i:%d%d\n”,i,输入[i][0],输入[i][1]);
    }
    }
    
    谢谢,但问题是我必须使用数组来获取xy坐标。我还没有查看StReT,在这个特定的游戏中,我必须使用数组。注意:检查结果:<代码>如果(2!= SnFF(“%d %d”,and输入(0),and输入(1)))HeleLyError():code>,或者更好地使用
    fgets()/sscanf()
    combo。
    void get_move(int player, two_dim td)
    {
        printf("Player %d, make your move: ", player);
        scanf("%d %d", &td.x, &td.y); 
        // more operations.
    }
    
    int main(void)
    {
         int player = 1;
    
         two_dim td;
         get_move(player, td);
    
         return 0;
    }
    
        #include <stdio.h>
    
        void get_move(int player, int input[]) {
            char temp = 0;
    
            printf("Player %i\'s move? ", player);
            scanf("%d %d", &input[0], &input[1]);
    
            // capture the user pressing the return key, which creates a newline
            scanf("%c", &temp);
        }
    
        int main() {
            int input[2][2];
    
            int i;                  // index into the player array
    
            // read players' moves
            for (i = 0; i < 2; i++) {
                get_move(i, input[i]);
            }
    
            // print players' moves
            for (i = 0; i < 2; i++) {
                printf("player %i: %d %d\n", i, input[i][0], input[i][1]);
            }
        }