C:填充多维数组

时间:2017-11-23 11:16:25

标签: c arrays

我想将几个数字插入Matrix

这就是我如何逐一获取所有数字:

int i, n;
int ch;
int *arr;
int dimension;
int numbers = 0;
char str[512];

// User input.
fgets(str, sizeof str, stdin);

    for (i = 0; i <= (strlen(str)); i++)
    {
        if (str[i] != '\0' && !isspace(str[i]))
        {
            int num = atoi(&str[i]);
            numbers++;
            if (i == 0)
            {
                dimension = num;
                arr = allocatearraysize(dimension);
            }

            // Here i want to add the current number to my `Maxtix`.
        }
    }

free(arr);

int* allocatearraysize(int size)
{
    return (int *)malloc(size * size * sizeof(int));
}

所以我试试:

arr[0][0] = num; 

仅查看是否有效但得到error

  

表达式必须具有指向对象类型的指针

修改

所以,如果我的输入是2 1 2 3 4

第一个number2)表示我的matrix应为2x2,我预计此numbers后{4} number 2 {1}})。

如果numbers的{​​{1}}与第一个number不匹配,例如:

number

这里的第一个3 1 2 3 4 为3,因此number除了number 9之外,所以在这种情况下我只想打印numbers消息。

但是我想将此error插入我的numbers

1 个答案:

答案 0 :(得分:0)

如果数组不是二维数组,则无法使用var[i][j]访问数组。

可能的答案是:

int i, j, n;
int ch;
int **arr;
int size;
int numbers = 0;
char str[512];

fgets(str, sizeof str, stdin);

size = atoi(&str[0]);

if(size > 1) {
    arr = (int**) malloc(size * sizeof(int*))

    for (i = 0; i < size; i++)
        arr[i] = (int*) malloc(size * sizeof(int));

    // Fill with arr[i][j]

    free(arr);
}
else {
    fprintf(stderr, "Size must be a valid number");
}