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!