C 扫描矩阵数组并将其发送给函数?
我正在尝试使get_move()以xy坐标扫描玩家1或玩家2在矩阵上的移动 get_move()将有两个参数。第一个是两个玩家中的哪一个正在移动(玩家1或玩家2)。第二个参数是move,它必须是一个数组 我不明白的是,我应该如何从main函数扫描move,然后将其作为参数发送到get_move()。我的意思是get_move()将扫描移动,但是get_move()中的一个参数将是扫描的xy坐标数组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
#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
)将现有数组传递给函数。在这种情况下,当您想要告诉scanf将x和y坐标放入数组时,需要向scanf函数传递两个指针。get\u move(…)
运算符为您提供指向其前面变量的指针。这里的&
和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]);
}
}