Purtroppo non posso far ripartire da zero f in quanto sennò dovrei rifare l' fscanf per le prima due righe...l' altra alternativa che mi è venuta in mente è fare gli fscanf per le prime due righe nel MAIN e poi richiamare la funzione...solo che anche adesso mi da dei problemi, nel senso che mi va in segmentation fault subito dopo i due fscanf...vi lascio questo mio secondo tentativo...
codice:
char * read_file(FILE * f);
int main() {
FILE * f;
char * str;
char c1,c2,s[10];
int x,var,clas;
f=fopen("xxx.dat","r");
fscanf(f,"%c %c",&c1); // Prelevo le prime due righe del file
fscanf(f,"%c %s %d %d",&c2,s,&var,&clas);
printf("%c %c %s %d %d\n",c1,c2,s,var,clas);
str=read_file(f);
}
char * read_file(FILE * f) {
int c,i=0,neg,x;
long int cont=0;
while(!feof(f)) {
fscanf(f,"%d",&x); cont++; // Conto i numeri presenti nel file
}
rewind(f);
char * str; // Dichiaro la stringa
str=calloc(cont,sizeof(char)); // Alloco la memoria necessaria per contenere tutti questi numeri
while(!feof(f)) { // Scorro il file per salvare nella stringa i numeri che trovo
fscanf(f,"%d",&x);
str[i]=x;
i++; }
return str; // ritorno la stringa
}
Non so più come fare...!!! Aiuto vi prego!