C 如何扫描二维阵列?

C 如何扫描二维阵列?,c,arrays,2d,C,Arrays,2d,我目前正在尝试将两个整数扫描到一个数组中,它可以工作,直到我输入两个数字,程序崩溃。我哪里错了 int teamWins = 0, opponentWins = 0, i = 0, gameNums = 0; int games[1][100]; printf("Enter Number of Games for Input: "); scanf("%d", &gameNums); for (i = 0; i <= gameNums; i++) {

我目前正在尝试将两个整数扫描到一个数组中,它可以工作,直到我输入两个数字,程序崩溃。我哪里错了

int teamWins = 0, opponentWins = 0, i = 0, gameNums = 0;
int games[1][100];  

printf("Enter Number of Games for Input: ");
    scanf("%d", &gameNums);

    for (i = 0; i <= gameNums; i++) {
        printf("Input the scores (Team vs. Opponent (ex. 10 5)): ");
            scanf("%d %d", &games[1][100]);
    }

    printf("%d %d", games[1][100]);

    return gameNums;
int teamWins=0,opponentWins=0,i=0,gameNums=0;
国际游戏[1][100];
printf(“输入游戏数量:”);
scanf(“%d”和gameNums);
对于(i=0;i
声明一个二维数组
int
,第一维中的大小为1,第二维中的大小为100。第一维中唯一有效的索引是
0
,第二维中的有效索引是
0-99

现在检查以下语句:

scanf("%d %d", &games[1][100]);
这里有两个问题,都是未定义的行为

1) 此语句尝试从标准输入读取两个整数,但只提供一个目标

根据:(感谢@DavidBowling提供参考)

fscanf函数从流指向的流中读取输入, 由指定 允许的输入序列及其转换方法 赋值,使用后续参数作为指向要 接收转换后的输入如果没有足够的参数 格式、行为未定义。


2)
games[1][100]
处的值已超出数组的边界。

要扫描2d数组,必须使用两个for循环和两个控制变量,如“i”、“j”


for(i=0;i你希望它做什么?
scanf(%d%d),&games[1][100]);
你的编译器警告告诉你什么?我希望它做的是将我的数字输入[0][0]、[0][1]、[1][0]、[1][1]等等。阅读一本书。不要试图猜测代码。使用
int games 1][100]
,code可以通过
games[a][b]访问2D数组;
b
必须在[0…99]范围内。
a
必须在[0…0]范围内。
games[1][100]
不好。我不确定你的引文来自何处,但最好提供引文。3)即使没有超出范围:
games[1][100]
是一个
int
,而不是指向
int
@Pablo--
游戏的指针[1][100]
理论上可能是
int
,但尝试访问会导致未定义的行为。@DavidBowling是的,我知道,这就是为什么我说,即使它没有超出范围。
scanf
期待一个指向
int
的指针,而不是
int
。操作代码使用
&games[1][100]
;我的观点是,
games[1][100]
表达式在理论上计算为
int
,但在给定UB的情况下,实际上可能不会计算为
int
scanf("%d %d", &games[1][100]);
 for( i=0;i<gameNums;i++)
    for(j=0;j<gameNums;j++)
           scanf("%d",& games [i][j]);