Ola pessoal, estou fazendo um exercicio em c onde recebo do usuario a quantidade de linhas e colunas para criar uma matriz usando alocação dinamica. Porém quando eu vou passar os valores para a matriz da erro e não sei o que é, ja revisei todo o código e comparei com outros exemplos mas não achei o erro.
#include<stdio.h>
#include<stdlib.h>
int **criaMatriz(int lin, int col);
int recebeMatriz(int lin, int col, int **p);
int recebeFaixa(int lin, int col);
main(){
int i,lin, col, tam,**p,resp=1;
while(resp==1){
printf("Informe a quantidade de Linhas: \n");
scanf("%i",&lin);
printf("Informe a quantidade de Colunas: \n");
scanf("%i",&col);
p = criaMatriz(lin, col);
recebeMatriz(lin, col, p);
recebeFaixa(lin,col);
for(i=0;i<lin*col;i++){
free(p[i]);
}
printf("1 para continuar e 0 para sair");
scanf("%i",&resp);
}
}
int **criaMatriz(int lin, int col){
int i,**p;
p = (int**)malloc(sizeof(int*)*lin);
if(!p){
printf("**Memoria insuficiente**");
}
for(i=0;i<lin;i++){
p[i]=(int*)malloc(sizeof(int*)*col);
}
if(!p){
printf("**Memoria insuficiente**");
}
}
int recebeMatriz(int lin, int col, int **p){
int i, j, num,pos=0;
for(i=0;i<lin;i++){
for(j=0;j<col;j++){
pos=0;
while(pos==0){
printf("Digite um numero positivo: \n");
scanf("%i",&num);
if(num>=0){
pos=1;
p[i][j]=num;
printf("testa b");
}else{
printf("Somente positivos!\n");
}
}
}
}
}
int recebeFaixa(int lin, int col){
int i, j,qtd=0,inicio, fim,tam;
tam = lin*col;
printf("informe o Inicio da faixa de 1 a %i: \n",tam);
scanf("%i",&inicio);
printf("informe o Fim da faixa de %i a %i: \n",inicio,tam);
scanf("%i",&inicio);
for(i=0;i<inicio;i++){
for(j=0;j<fim;j++){
qtd+=1;
}
}
printf("Quantidade entre %i e %i: %i\n",inicio, fim, qtd);
}