Salve a tutti,
ho un problemino con i puntatori, ho un main.c che richiama una libreria passando ad una funzione di librearia un puntatore a struttura.
Detto in poche parole questo è il main.c:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include "my_libreria.h"
int main()
{
matrix *mat1,*mat2;
scrivi_elem(&mat1,0,0,1);
printf("%d\n",mat1->matrice[0][0]);
system("pause");
}
questa è my_libreria.h dove ci sono tutte le dichiarazioni:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define cost_elem_max 100
typedef enum{
ERR_DIMENSIONI_ZERO = -1,
ERR_DIMENSIONI_DIFFERENTI = 0,
ERR_NORMA_ZERO = 1,
ERR_SCALARE_NULLO = 2,
SUCCESS = 3
} CODICE_ERRORE;
typedef struct{
int matrice[cost_elem_max][cost_elem_max];
int num_riga;
int num_colonna;
}matrix;
CODICE_ERRORE differenza(matrix *matr1,matrix *matr2,matrix *matr3);
/*-----------------------------------------------------------------------------*/
int norma(matrix *matr1);
/*-----------------------------------------------------------------------------*/
CODICE_ERRORE normalizzazione(matrix *matr1);
/*-----------------------------------------------------------------------------*/
CODICE_ERRORE prodotto_scalare(matrix *matr1,int scal);
/*-----------------------------------------------------------------------------*/
CODICE_ERRORE prodotto(matrix *matr1,matrix *matr2,matrix *matr3);
/*-----------------------------------------------------------------------------*/
CODICE_ERRORE prodotto_vettoriale(matrix *matr1,matrix *matr2,matrix *matr3);
/*-----------------------------------------------------------------------------*/
CODICE_ERRORE somma(matrix *matr1,matrix *matr2,matrix *matr3);
/*-----------------------------------------------------------------------------*/
void vett_trasposto(matrix *matr1,matrix *matr2);
/*-----------------------------------------------------------------------------*/
int leggi_elem(matrix *mat1,int riga,int colonna);
/*-----------------------------------------------------------------------------*/
void scrivi_elem(matrix *mat1,int riga,int colonna,int elemento);
e la seguente è la funzione incriminata di my_libreria.c (non ve la inserisco tutta perchè senno sarebbe troppo lunga):
codice:
void scrivi_elem(matrix* mat1,int riga,int colonna,int elemento)
{
mat1->matrice[riga][colonna] = elemento;
mat1->num_colonna = 4;
system("pause");
}
Ora il programma si compila e poi crasha. Le due righe che mi danno problemi (se le commento il problema sparisce), sono l'asegnazione di "mat1->num_colonna" nella funzione di libreria, e la printf nel main.
Sicuramente sbaglierò qualcosa di sinstassi ma non riesco a capire cosa.
Vi ringrazio in anticipo per la disponibilità,
Neptune.