Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491

    [c++] Puntatori e problema di scope

    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
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  2. #2
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Ho risolto modificando così la funzione, leggendo qualche post in giro qui e lì:
    codice:
    int leggi(char *nomefile,double *&x){
    Per il resto tutto uguale....
    Sono un pò arruginito, qualcuno mi spiega cosa ho fatto??
    Grazie
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.