Ciao a tutti.

Il mio problema è il seguente:
-ho un file che contiene in ogni riga 3 numeri
-il file ha n righe
-voglio creare una matrice con 4 righe e n colonne (le prime 3 righe corrispondono ai valori del file, la quarta devo compilarla io opportunamente)

Ho provato a scrivere :
codice:
#include<stdio.h>
 #include<stdlib.h> 
#define NUM_DATI 4 
/*prototipi*/ 
int stampa_tot(FILE *ftpr); 
void my_alloc(int *dati,int n); 
void fill_vec(int **dati,int n,FILE *fptr); 

/*main*/ 
int main(int argc,char **argv){
 char *infile,*outfile;
 infile="connessioni.txt";
 outfile="rep_connessioni.txt"; 
if(argc==3){
 infile=argv[1]; 
outfile=argv[2]; } 
FILE *inptr,*outptr; 
if((inptr=fopen(infile,"r"))==NULL){
 printf("impossibile aprire il file %s in modalità read",infile); 
exit(1); }
 if( (outptr=fopen(outfile,"w"))==NULL ){ 
printf("impossibile aprire il file %s in modalità write",outfile);
 fclose(inptr); 
exit(1); } 
int num; 
num=stampa_tot(inptr);
 printf("%d",num);
int *dati[NUM_DATI];
int i; 
for(i=0;i<NUM_DATI;i++) my_alloc(dati[i],num);
 fill_vec(dati,num,inptr); 
return 0; } 
/*definizioni*/ 
int stampa_tot(FILE *fptr){ 
char buff[20]; 
register int i=0; 
while( (fgets(buff,sizeof(buff),fptr))!=NULL ){
 i++; } 
rewind(fptr);
 return i; } 

void my_alloc(int *colonna,int n){
 if((colonna=(int*)malloc((n+2)*sizeof(int)))==NULL){ 
printf("errore nell'allocazione della memoria"); 
exit(-1); }
 } 

void fill_vec(int **dati,int n,FILE *fptr){ 
char buff[20];
 register int i=0; 
while( (fgets(buff,sizeof(buff),fptr))!=NULL && i<n ){ 
sscanf(buff,"%d %d %d",&(dati[0][i]),&(dati[1][i]),&(dati[2][i])); i++; } 
rewind(fptr); }
Ma ottengo un errore di segmentation fault.
Ho postato tutto il codice per chiarezza, ma l'errore deve essere nella:
-my_alloc
-fill_vec.

Grazie per l'aiuto!