Salve a tutti,
proprio non riesco a capire perché un programma C si perde l'allocazione della memoria di per un array fatto con i puntatori.
Il codice è il seguente (funzionante.. + è per leggere un file con una matrice di numeri di cui sappiamo solo il numero di colonne maxCol.):
Se mi faccio stampare il valore del valore dell'array mentre lo riempio leggendo il file...tutto ok!
Ma la funzione printMatrix fa cilecca... stampando tutti valori uguali (160.0).
Mi chiedo: sbaglio ad allocare l'array lì dove l'ho allocato??
float **arrayF;//Array contenente tutto il file dichiarato globalmente
void printMatrix(){
int i,j;
for(i=0;i<maxRow;i++){
for(j=0;j<maxCol;j++){
printf("%f",arrayF[j]);
}
printf("\n");
}
}
//Allocate space for a bidimensional array
void initMatrix(){
int i;
arrayF= (float**) malloc(dimN* sizeof(float *));
for (i=0;i<dimN;i++)
arrayF=(float *) malloc(dimM*sizeof(float));
}
void readFile(FILE *fileMA){
float valore; //valore da leggere nel file
int i=0,//indici da usare per far scorrere l'array
j=0,
initMatrix();
//Read file until the end is reached
if (fileMA!=NULL){
while(scanRes!=EOF){
while(j<maxCol){
arrayF[j]=valore;
j++;
}
i++;
j=0;
}
}else{
printf("ERROR: Cannot open the file!\n");
}
maxRow=i+1;//Determino quante sono le righe del file
printMatrix();
fclose(fileMA);
}
int main (int argc, const char * argv[]) {
FILE *fileMA=fopen("...");
readFile(fileMA);
}