PDA

View Full Version : array di strutture


Tissot
15-05-2005, 09:49
salve


ho un problema con questo codice

#include<stdio.h>

struct datiLoc
{
int acctNum;
char nome[10];

};

struct datiLoc ordina[10];

main()
{
ordina[1].acctNum=1245; //questo funziona
ordina[1].nome="ciao";
}


ordina[1].nome="ciao" --> quando compilo mi dice che" left operand must be l-value" come mai? non posso assegnare una stringa ?

grazie

[edit]

se faccio questo dovrebbe funzionare?
strcpy(ordina[1].nome,parola);

Fenomeno85
15-05-2005, 11:54
l'assegnazione la puoi fare solo in case di dichiarazione

~§~ Sempre E Solo Lei ~§~

Fenomeno85
15-05-2005, 11:55
ah per strcopy se la parola è una stringa con terminatore /0 allora va bene

~§~ Sempre E Solo Lei ~§~

Tissot
15-05-2005, 12:45
l'assegnazione la puoi fare solo in case di dichiarazione

~§~ Sempre E Solo Lei ~§~


perchè????

allora come faccio assegnare in quel campo una stringa, oltre a strcpy e scanf ?

Fenomeno85
15-05-2005, 13:04
perchè????

allora come faccio assegnare in quel campo una stringa, oltre a strcpy e scanf ?

le strutture di solito non vengono mai inizializzate con valori uguali per tutti, se lo vuoi fare basta farti una funzione che associ a tutti i campi un determinato valore. fget puoi utilizzare se son stringhe

~§~ Sempre E Solo Lei ~§~

Tissot
15-05-2005, 15:23
le strutture di solito non vengono mai inizializzate con valori uguali per tutti, se lo vuoi fare basta farti una funzione che associ a tutti i campi un determinato valore. fget puoi utilizzare se son stringhe

~§~ Sempre E Solo Lei ~§~


infatti non inizializzo tutte

ordina[1].nome="ciao" // assegno la stringa al campo nome della seconda struttura e non di tutte.

fammi un esempio di fget che non ho voglia di cercare :)

Ziosilvio
15-05-2005, 15:34
ordina[1].nome="ciao" --> quando compilo mi dice che" left operand must be l-value" come mai? non posso assegnare una stringa ?
ordina[1].nome è un array, quindi non puoi cambiargli valore, quindi non puoi metterlo a sinistra di un operatore di assegnazione.
se faccio questo dovrebbe funzionare?
strcpy(ordina[1].nome,parola);
Sì, quello funziona, perche quando lo passi a strcpy, ordina[1].nome viene convertito da array di char a puntatore a char.

cionci
15-05-2005, 15:39
Devi usare strcpy per cambiare il calore di una stringa...