a=malloc(n*n*sizeof(char)); <--- WRONGOriginariamente inviato da Fenzo
ciao a tutti
ho un problema con un esercizio.
Devo creare un array bidimensionale di tipo char dopo aver dato la dimensione in input.
Poi tale array deve essere passato come argomento in una funzione.
Il problema è che dopo aver immesso tutti i parametri richiesti dal main, il programma si chiude, come se la funzione non venisse chiamata. Penso che il problema sia proprio nella creazione della matrice; dato che sono ancora agli inizi con il C mi affido alla vostra sapienza
grazie
questo è il codice
codice:int main(){ int k, n, r0, c0; char M[n][n], *a; printf("inserisci ordine matrice\n"); scanf("%d",&n); printf("inserisci indice prima riga\n"); scanf("%d",&r0); printf("inserisci indice prima colonna\n"); scanf("%d",&c0); printf("inserisci ordine tappeto\n"); scanf("%d",&k); a=malloc(n*n*sizeof(char)); M[0][0]=*a; sierpinskiCarpet(n,M,r0,c0,k); system("PAUSE"); return 0; }
prima allochi le righe
poi con un for allochi le colonne
con la tua soluzione hai semplicemente creato un array A di n*n "caselle"
edit: in più non capisco la parte iniziale dove hai un
char M[n][n] senza avere n inizializzata a nessun valore
ma scusa il compilatore non ti restituisce nessun warning? Se no, per favore, cambialo
e non capisco nemmeno il fatto che poi a M assegni "a"
facendo un M[n][n] già allochi (allocazione automatica), non ha senso fare ciò che tu hai fatto.
Dovresti prima creare un char** M;
quindi fare l'allocazione dinamica come ti ho spiegato sopra
a quel punto puoi accedere alle posizione di M come se fosse una matrice normale.