PDA

Visualizza la versione completa : [C] Puntatori ad array


dr kool
20-10-2006, 12:21
salve a tutti

ho un piccolissimo problemino, sta facendo un programma con un mai iniziale che si richiama una funzione
"void carica_immagine_in_A( double **A, int *n, int *m, int *p, double **h)"
dove A e h sono array, sono doppi puntatori in quanto devono ritornarmi nel main. Fin qui tutto bene. Posto il codice cos si capisce meglio


/*funzione che carica l'immagine nell'array A*/
void carica_immagine_in_A(double **A, int *n, int *m, int *p, double **h)
{

/*dichiarazione delle variabili*/
FILE *fp;
int N,M,j,z,i;


if((fp=fopen("dati5","r"))==NULL)

{

printf("Errore nell'aprire il file %s","dati5");

exit(1);

}



fscanf(fp, "%d\n",&(*n));

fscanf(fp, "%d\n",&(*m));

fscanf(fp, "%d\n",&(*p));


M=2*(*m);
*h=(double*)calloc(M,sizeof(double));


/*controllo se posibile allocare h*/
if(*h==NULL){
printf("Memoria insufficiente per allocare il vettore dei filtri");
exit(1);
}


for(j=0;j<M;j++)

{

fscanf(fp,"%lf",&(*h[j]));
printf("\nj= %d ",j);

printf("h[%d]=%lf\n",j,*h[j]);

}
}

il problema quando lo eseguo, quando legge il vettore h dopo un paio di passi fa "segmentation fault"
M la vede e mi dice anche quanto . L'array lo alloca. Non riesco a capuire dove sta il problema.
Help me :(

dr kool
20-10-2006, 14:29
nessuno sa aiutarmi :cry: :cry: :cry:

MItaly
20-10-2006, 20:50
Originariamente inviato da dr kool

*h=(double*)calloc(M,sizeof(double));

Qui stai allocando la memoria per contenere un singolo valore double. Devi allocarla per tutto l'array (numeroelementi*sizeof(tipoelementi)).

Loading