Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/01/2017, 11:43
antoniuskas
 
Fecha de Ingreso: junio-2009
Mensajes: 30
Antigüedad: 14 años, 10 meses
Puntos: 0
Crear estructura en .h desde main

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);
}