Buonasera a tutti!!!

Il mio problema è il seguente: sto cercando di creare una funzione che mi permetta di girare una matrice di dimensioni l x h verso destra o verso sinistra...

Dato che non si tratta appunto di una matrice "quadrata", pensavo di creare un secondo array con le dimensioni invertite h x l..

quindi, per prima cosa alloco la memoria necessaria per il secondo array r, metto il contenuto del primo array p in r, svuoto p, alloco memoria per un nuovo p di dimensioni h x l, metto il contenuto di r in p e infine svuoto r...alla fine return p...

Ovviamente metto in pratica il tutto e non funziona -.-''

Secondo voi dove sbaglio??

Posto il codice:

char** destra(int l, int h, char **p){


int i, j;
char **r;


r=(char **) malloc( l * sizeof(char *));
for (i=0; i<l; i++){
r[i]=(char *) malloc( h * sizeof(char));
}


for(i=0; i<l; i++){
for(j=0; j<h; j++){
r[i][j]=p[h-j-1][i];
}
}


for (i=0;i<h;i++)
free(p[i]);
free(p);


p=(char **) malloc( l * sizeof(char *));
for (i=0; i<l; i++){
p[i]=(char *) malloc( h * sizeof(char));
}


for(i=0; i<l; i++){
for(j=0; j<h; j++){
p[i][j]=r[i][j];
}
}


for (i=0;i<l;i++)
free(r[i]);
free(r);
return p;
}
Spero si capisca il problema...grazie per l'attenzione