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:
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.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; }
E' così? allora come risolvo?
Grazie![]()

elf90 g77
Rispondi quotando