我正在尝试将两个整数扫描成一个数组,它可以工作,直到我输入两个数字并且程序崩溃.我错在哪里?
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)
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]已经超出了数组的范围.