Ho un problema che credo di capire ma non so risolvere, in pratica devo fare una funzione che mi prenda in ingresso un puntatore e mi restituisca il puntatore 'popolato' dai dati letti da file e la lunghezza dell'array. Quindi ho fatto qualcosa del genere:
codice:
int leggi(char* nomefile,double* x){
/*Legge le accelerazioni da file*/
const int MAX_VALUES=200;
double tempx[MAX_VALUES];
FILE *dati;
char stream[10];
int j=0,read,dim;
dati = fopen(nomefile,"r");
if(dati==NULL){/*GESTIRE*/;}
while(!feof(dati) & j<MAX_VALUES){
read=fscanf(dati,"%s",&stream);
if(read<=0)break;
tempx[j]=atof(stream);
j++;
}
fclose(dati);
dim=j;
//Crea i vettori
x=new double[dim];
//Copia i vettori
for(int i=0;i<dim;i++){
x[i]=tempx[i];
}
return dim;
}
La funzione in pratica alloca un nuovo array e lo assegna al puntatore passato alla funzione e poi lo popola con i valori presenti nell'array letto. Il problema è che poi quando richiamo la funzione dal main il puntatore non punta + a nulla!! Credo sia un problema di scope, cioè avendo allocato l'array all'interno della funzione all'esterno poi non è più disponibile.
E' così? allora come risolvo?
Grazie