如何扫描2D阵列?

-1 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++) {
        printf("Input the scores (Team vs. Opponent (ex. 10 5)): ");
            scanf("%d %d", &games[1][100]);
    }

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

    return gameNums;
Run Code Online (Sandbox Code Playgroud)

MFi*_*KDX 5

int games[1][100];
Run Code Online (Sandbox Code Playgroud)

声明int第一维中size = 1且第二维中size = 100的二维数组.第一维中唯一有效的索引是0,第二维中的有效索引是0-99.

现在检查以下语句:

scanf("%d %d", &games[1][100]);
Run Code Online (Sandbox Code Playgroud)

这里有两个问题,两个都是未定义的行为.

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

根据标准 :(谢谢@DavidBowling的参考)

fscanf函数从stream指向的流中读取输入,在指定允许的输入序列的格式指向的字符串的控制下,以及如何转换它们以进行赋值,使用后续参数作为指向接收转换的对象的指针输入.如果格式的参数不足,则行为未定义.

2)值at处的值games[1][100]已经超出了数组的范围.