#include <stdio.h>
#include <stdlib.h>
#define MAX 100

int **matriz_le(int n, int m){
	// obs: na alocação de matrizes de ponteiros, é necessário alocar primeiro as linhas e dps a coluna.
	int **M = malloc(n * sizeof(int)); // Aqui aloquei o vetor dinâmicamente com o número de linhas fornecido.
	int i, j; 
		
	// agora, alocar memória separadamente para cada linha (array de colunas) 
	for(i = 0; i < n; i++){
		M[i] = malloc(m * sizeof(int)); // para cada linha, aloca uma quantidade de memórias com o malloc
	}	

	for(i = 0; i < n; i++){
		for(j = 0; j < m; j++){
			scanf("%d", &M[i][j]);
		}
	}	
	return M; // retorna o ponteiro para a matriz
}

void matriz_print(int **M, int n, int m){
	int i, j;
	for(i = 0; i < n; i++){
		for(j = 0; j < m; j++){
			printf("%d ", M[i][j]);
		}
	}
}

int main(void){
	int n, m;
	scanf("%d %d", &n, &m);
	int **M = matriz_le(n, m);
	matriz_print(M, n, m);	
	return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: