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 :Ma ottengo un errore di segmentation fault.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); }
Ho postato tutto il codice per chiarezza, ma l'errore deve essere nella:
-my_alloc
-fill_vec.
Grazie per l'aiuto!

Rispondi quotando