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:
questa è my_libreria.h dove ci sono tutte le dichiarazioni: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"); }
e la seguente è la funzione incriminata di my_libreria.c (non ve la inserisco tutta perchè senno sarebbe troppo lunga):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);
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.codice:void scrivi_elem(matrix* mat1,int riga,int colonna,int elemento) { mat1->matrice[riga][colonna] = elemento; mat1->num_colonna = 4; system("pause"); }
Sicuramente sbaglierò qualcosa di sinstassi ma non riesco a capire cosa.
Vi ringrazio in anticipo per la disponibilità,
Neptune.


Rispondi quotando
