我想将几个数字插入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
:
第一个number
(2
)表示我的matrix
应为2x2
,我预计此numbers
后{4} number
2
{1}})。
如果numbers
的{{1}}与第一个number
不匹配,例如:
number
这里的第一个3 1 2 3 4
为3,因此number
除了number
9
之外,所以在这种情况下我只想打印numbers
消息。
但是我想将此error
插入我的numbers
。
答案 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");
}