codice:
struct utente{
const char *nome;
const char* cognome;
const char *telefono;
};
int main(int arhc, char**argv)
{
struct utente elenco;
elenco.cognome="pippo";
}
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:
// se cognome era char* e non const char*
elenco.cognome[1]='c'; // segmentation fault
Va in segmentation fault perchè la stringa è di sola lettura.
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");