Newsgroup: it.comp.lang.c
Titolo: come si accede all'array di una struttura?

Salve ho il seguente problema:
ho una struttura A che contiene un array di caratteri
struct strutturaA
{
	char carattere[6];
};
typedef struct strutturaA strutturaA;
mi faccio la malloc per allocare tale struttura
 
strutturaA *strutturaAPtr = (strutturaA *) malloc(sizeof(strutturaA));
poi provo a mettere il valore = "pippo" in carattere
 
 void main()
{
	 *((*strutturaAPtr).carattere) = "pippo";
}
ma il compilatore mi dice "cannot convert from 'char [6]' to 'char'"
allora provo a fare un cast 
     (char [6]) *((*strutturaAPtr).carattere) = "pippo";
ma mi dice "cannot convert from 'char' to 'char [6]' " cioč il contrario
di prima!!!
aiutatemi please :-(
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 aiutatemi please :-(
Rendiamo tutto un po' più facile :
struct
{
    char carattere[6];
}strutturaA;
int main(void)
{
    /* copia la stringa "pippo" in stutturaA.carattere*/
    strcpy(strutturaA.carattere, "pippo");
    printf("carattere : %s\n", strutturaA.carattere);
    return(0)
}

 }
che schifezze che scrivi :-)
Se allochi un puntatore ad una struttura, devi poi accedervi con
nomepuntatore->campo
inoltre, se dichiari una variabile come array di caratteri, non puoi
fare un assegnazione ="pippo"...
scrivere ="pippo" implica che tu assegni a "carattere" il puntatore
della stringa allocata "pippo", cosa che non e` possibile per via della
dichiarazione che hai fatto (non per niente esiste la funzione standard
strcpy, forse l'hanno inventata per quache cosa:-))).
cmq, per il tuo esempio, devi solo modificare il main con qualcosa del
tipo:
void main ()
{
	strcpy((strutturaAPtr->carattere),"pippo");
}
-- 
ciao, Mirco.
[ 
http://hellspawn.dnsalias.net/~mircomir/
 ] [ Icq#:51640305 ]
[ 
http://pido2.webhop.net/
 ]

salve (riscrivo il  messaggio perchè non è stato pubblicato)
ho una struttura con un array di caratteri dentro,
tipo 
struct A
{
     char a[6];
}
e voglio poter mettere la stringa "pippo" in a;
io faccio così ma mi da' errore:
struct strutturaA
{
	char carattere[6];
};
 
typedef struct strutturaA strutturaA;
 
strutturaA *strutturaAPtr = (strutturaA *) malloc(sizeof(strutturaA));
 void main()
{
	 *((*strutturaAPtr).carattere) = "pippo";
}
ho provato anche
struct strutturaA
{
	char carattere[6];
};
 
typedef struct strutturaA strutturaA;
 
strutturaA *strutturaAPtr = (strutturaA *) malloc(sizeof(strutturaA));
 void main()
{
	 ((*strutturaAPtr).carattere) = "pippo";
}
ma niente da fare.
aiutatemi please!!


 *((*strutturaAPtr).carattere) = "pippo";
Questa č sbagliata perchč ci sono due deindirizzamenti.
         (*strutturaAPtr).carattere = "pippo";
Questa č corretta, perň, essendo un puntatore, č piů leggibile usare:
         strutturaAPtr->carattere = "pippo";
Comunque, non puoi fare un assegnamento di una stringa ad un array di char,
devi usare la funzione strcpy() che copia una stringa in una locazione di
memoria sufficientemente grande da poter contenere la nuova copia.
--------------------------------
Inviato via 
http://usenet.libero.it

 salve (riscrivo il  messaggio perchè non è stato pubblicato)
1) e` stato pubblicato
2) hai anche delle risposte
