PDA

View Full Version : strutture e array


NA01
10-05-2004, 18:49
sto sistemando i sorgenti di un mio vecchio programma per renderlo un pò più leggibile.
volevo mettere alcuni parametri in una struct.
tra i vari parametri ho alcuni array che però non mi lascia inizializzare....
per la precisione mi dice

gal.cpp:67: error: incompatible types in assignment of `const char[8]' to `
char[20]'

sulla linea

impostazioni.colore_sfondo = "#00008b";

che ho dichiarato dentro la struttura come

char colore_sfondo[20];


dove sbaglio?

ciao!

cionci
10-05-2004, 20:05
Nn puoi assegnare la stringa in quel modo... Devi usare strcpy...

fpucci
10-05-2004, 20:09
le stringhe si assegnano tramite strcpy()
Quindi dovresti fare:

strcpy (impostazioni.colore_sfondo, "#00008b");

Bye

bizzu
10-05-2004, 21:21
Ragazzi le stringhe sono array di oggetti... non si possono assegnare come fareste in VBScript! Vanno esaminate una posizione alla volta, o con apposite funzioni (che non fanno altro che considerare un elemento alla volta). ;)

NA01
11-05-2004, 12:56
si, avevo immaginato di dover usare strcpy, però non capisco perchè se l'assegnazione la faccio a un array fuori della struttura il compilatore non mi dà errori e il programma funziona correttamente... :wtf: :D

ciao

cionci
11-05-2004, 14:47
Perchè la fai in questo modo:

char pippo[] = "ciao";

Non è un'assegnazione, ma una inizializzazione...

Se fai:

char pippo[20];

pippo = "ciao";

allora è sbagliato comunque e se funziona è solo fortuna...

fabio_tarantino
11-05-2004, 14:48
A volte dipende anche dal compilatore che usi

cionci
11-05-2004, 14:56
Originariamente inviato da fabio_tarantino
A volte dipende anche dal compilatore che usi
Mmmhhh...direi di no... Può funzionare lì per lì, ma a lungo andare può creare sicuramente problemi...
Lo standard impone che non possa succedere una cosa del genere...

fabio_tarantino
11-05-2004, 15:15
Originariamente inviato da cionci
Mmmhhh...direi di no... Può funzionare lì per lì, ma a lungo andare può creare sicuramente problemi...
Lo standard impone che non possa succedere una cosa del genere...

Non è detto che tutti i compilatori aderiscano allo standard ANSI...

e di compilatori "c" ce ne sono una marea.

Se vedi ad esempio cosa è successo nel corso degli anni con il pascal! (addirittura il compilatore borland pascal 7 (e non l'object pascal), accettava dichiarazioni di tipo OO!...

cionci
11-05-2004, 15:24
Vabbè, ma è comunque meglio evitare una cosa del genere...

fabio_tarantino
11-05-2004, 15:41
Originariamente inviato da cionci
Vabbè, ma è comunque meglio evitare una cosa del genere...

...aggiungerei "come la peste"