【发布时间】:2016-04-23 01:04:34
【问题描述】:
我想知道如何正确使用 scanf 来填充多维数组。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[]) {
int n; //number of rounds
int* sArray; //multidimensional array that holds the scores of both players
int i;
scanf("%d", &n);
sArray = (int*) calloc (n * 2, sizeof(int));
for(i=0; i<n; i++) {
scanf("%d %d", &sArray[i][1], &sArray[i][2]);
}
return 0;
}
它给了我一个错误,“下标值不是数组、指针或向量。”任何帮助将不胜感激!
【问题讨论】:
-
要取消引用二维数组,您需要一个双指针:
int** sArray; -
仅供参考,您的#include 语句应该在您的主要方法之前。
-
始终检查来自
scanf的函数返回值(成功扫描的项目数)。 -
要填充二维数组,您需要两个嵌套的 for 循环
-
应该是
int (*sArray)[2] = calloc (n , sizeof **sArray * 2);
标签: c arrays multidimensional-array scanf dynamic-arrays