Quiero crear una matriz de dos dimensiones utilizando una estructura con una variable f para las filas y una c para las columnas y un vector donde se guardan los valores de la matriz. El problema que tengo en el main es que no puedo acceder a los datos de la matriz, al imprimir por ejemplo las columnas
printf("%d",(*M).c); // aquí da el error
No tengo acceso a los datos. Debería pasar la M como referencia, pero no me sale.
Lo tengo hecho de otra forma pasando sólo las filas y columnas y que la función CrearMatriz devuelva un dato de tipo Matriz, pero quiero que se haga así. Y me da fallo. No sé como hacer en el main para que los datos que se crean tengan accesibilidad desde él.
He probado pasando *M en lugar de M, vamos que estoy bloqueado y no me sale.
A ver si alguien puede ayudarme.
Saludos y GRACIAS.
Este es el matriz.h
Código:
typedef struct{
int f;
int c;
int *vector;
}Matriz;
void CrearMatriz(Matriz *M, int f,int c);
Este es el matriz.c
Código:
#include "matriz.h"
void CrearMatriz(Matriz *M,int f, int c){
int *vector;
(M=(Matriz *)malloc(sizeof(Matriz)));
(*M).f=f;
(*M).c=c;
// reservo memoria para el vector de tipo int por filas por columnas
(vector=(int *)malloc(f*c*sizeof(int)));
// le meto valores cero a los elementos de la matriz
for (int i=0;i<f*c;i++){
vector[i]=5;
}
// asignamos al vector el valor reservado en la función.
M->vector = vector;
// devuelvo el elemento de tipo matriz creado
}
Este es el main.c
Código:
#include <stdio.h>
#include <stdlib.h>
#include "matriz.h"
int main(int argc, char** argv) {
Matriz *M;
int f=3;
int c=3;
CrearMatriz(M,f,c);
printf("%d",(*M).c);
return (EXIT_SUCCESS);
}