Attenzione alla parola chiave const, perchè in questo caso se dici elenco.cognome="pippo", la stringa "pippo" verrà messa nell' area di sola lettura del programma.Per cui se accedi ai suoi campi come ad esempio:codice:struct utente{ const char *nome; const char* cognome; const char *telefono; }; int main(int arhc, char**argv) { struct utente elenco; elenco.cognome="pippo"; }
Va in segmentation fault perchè la stringa è di sola lettura.codice:// se cognome era char* e non const char* elenco.cognome[1]='c'; // segmentation fault
Dichiare const char* è quindi solo una forma di tutela.Non è strettamente necessario.
L' incompatibilità è dovuta al fatto che "pippo" è di tipo const char* e non di tipo char[20].
Se vuoi anche accedere in scrittura alle stringhe puoi usare la strcpy e dichiarare array di char:
codice:// cognome è di tipo char[20] strcpy(elenco.cognome,"pippo");

Rispondi quotando