PDA

Visualizza la versione completa : [C] Strutture: iniziallizzare matrice, errore di sintassi


W3bm@st3r
04-12-2011, 19:09
Ciao! Sarà una stupidaggine ma non riesco a liberarmi di questo errore di sintassi! Se qualcuno mi può aiutare questo è il codice:

Questo è dichiarato fuori dal main:



typedef struct Obj{
char who, simbol;
char disegno[DIM_VE_NAV][DIM_OR_NAV];
int x, y, vite;
ObjLink link;
pid_t pID;
} Obj;


Che poi viene inizializzato dentro una funzione:



navicella.who = 'n';
navicella.disegno[DIM_VE_NAV][DIM_OR_NAV] = {{'|',' ',' ','|'},{'|','=','=','|'},{'|',' ',' ','|'}};
navicella.vite = NAV_VITA;
navicella.x = DIM_OR_SCREEN/2;
navicella.y = DIM_VE_SCREEN;


L'errore di sintassi è nella seconda riga...

Ciao, grazie!

ramy89
04-12-2011, 20:30
Apparte le varie costanti che non so se hai definito, navicella.disegno è una matrice.
navicella.disegno[DIM_VE_NAV][DIM_OR_NAV] è un singolo carattere,tu gli stai assegnando un array di array di caratteri.

W3bm@st3r
04-12-2011, 23:27
navicella.disegno = {{'|',' ',' ','|'},{'|','=','=','|'},{'|',' ',' ','|'}};

così non va lo stesso... com'è la sintassi? se cerco su internet non trovo ancora soluzione...

MItaly
04-12-2011, 23:37
Quella sintassi vale solo per l'inizializzazione, non per l'assegnamento.

W3bm@st3r
05-12-2011, 19:23
Mah.. ho risolto così!

navicella.disegno[0][0] = '/';
navicella.disegno[0][1] = ' ';
navicella.disegno[0][2] = ' ';
navicella.disegno[0][3] = ' ';
navicella.disegno[0][4] = ' ';
navicella.disegno[0][5] = '\\';
navicella.disegno[1][0] = '|';
navicella.disegno[1][1] = ' ';
navicella.disegno[1][2] = '=';
navicella.disegno[1][3] = '=';
navicella.disegno[1][4] = ' ';
navicella.disegno[1][5] = '|';
navicella.disegno[2][0] = '\\';
navicella.disegno[2][1] = ' ';
navicella.disegno[2][2] = ' ';
navicella.disegno[2][3] = ' ';
navicella.disegno[2][4] = ' ';
navicella.disegno[2][4] = '/';

ahah bella!!

oregon
05-12-2011, 19:27
Ti conviene inserire tutti i caratteri in una stringa e scrivere un ciclo per estrarli e copiarli all'interno della matrice in maniera opportuna.

ramy89
05-12-2011, 20:03
Non sono fresco di C, ma penso che puoi fare:


char mat[][]={{'|',' ',' ','|'},{'|','=','=','|'},{'|',' ',' ','|'}};
navicella.disegno=mat;

W3bm@st3r
05-12-2011, 21:39
Bella soluzione , non ci avevo pensato! :)

W3bm@st3r
05-12-2011, 22:04
Però mi dà errore lo stesso, cmq non fa nulla, grazie di tutto!

MItaly
05-12-2011, 22:17
Originariamente inviato da W3bm@st3r
Però mi dà errore lo stesso
Perché non puoi assegnare così due array; puoi risolvere con una memcpy:


memcpy(navicella.disegno, mat, sizeof(mat));

Loading