Ways to create dynamic matrix in C?
c, dynamic-arrays, matrix
Solution
You can try like this
int main()
{
int i, j, lines, columns, *intMatrix;
printf("Type the matrix lines:\t");
scanf("%d", &lines);
printf("Type the matrix columns:\t");
scanf("%d", &columns);
intMatrix = (int *)malloc(lines * columns * sizeof(int));
for (i = 0; i < lines; ++i)
{
for (j = 0; j < columns; ++j)
{
printf("Type a number for <line: %d, column: %d>\t", i+1, j+1);
scanf("%d", &intMatrix[i*lines + j]);
}
}
Problem
This is the only way I know to create a matrix (2D array) in C, dynamically, and reading user input into its elements: Creating a pointer to an array of `x` pointers, where each pointer represents a line in the matrix - `x` is the number of lines in the matrix (its height). Pointing each pointer in this array to an array with `y` elements, where `y` is the number of columns in the matrix (the width). ``` int main() { int i, j, lines, columns, **intMatrix; printf("Type the matrix lines:\t"); scanf("%d", &lines); printf("Type the matrix columns:\t"); scanf("%d", &columns); intMatrix = (int **)malloc(lines * sizeof(int *)); //pointer to an array of [lines] pointers for (i = 0; i < lines; ++i) intMatrix[i] = (int *)malloc(columns * sizeof(int)); //pointer to a single array with [columns] integers for (i = 0; i < lines; ++i) { for (j = 0; j < columns; ++j) { printf("Type a number for <line: %d, column: %d>\t", i+1, j+1); scanf("%d", &intMatrix[i][j]); } } ``` Are there other ways to do this?