Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144

    [C] Strutture: iniziallizzare matrice, errore di sintassi

    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:

    codice:
    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:

    codice:
    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!

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    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.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144
    navicella.disegno = {{'|',' ',' ','|'},{'|','=','=','|'},{'|',' ',' ','|'}};

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

  4. #4
    Quella sintassi vale solo per l'inizializzazione, non per l'assegnamento.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144
    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!!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ti conviene inserire tutti i caratteri in una stringa e scrivere un ciclo per estrarli e copiarli all'interno della matrice in maniera opportuna.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Non sono fresco di C, ma penso che puoi fare:
    codice:
    char mat[][]={{'|',' ',' ','|'},{'|','=','=','|'},{'|',' ',' ','|'}};
    navicella.disegno=mat;

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144
    Bella soluzione , non ci avevo pensato!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144
    Però mi dà errore lo stesso, cmq non fa nulla, grazie di tutto!

  10. #10
    Originariamente inviato da W3bm@st3r
    Però mi dà errore lo stesso
    Perché non puoi assegnare così due array; puoi risolvere con una memcpy:
    codice:
    memcpy(navicella.disegno, mat, sizeof(mat));
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.