Inizializzazione della struttura C con char array

Inizializzazione della struttura C con char array

mike.name è 20 byte di memoria riservata all'interno della struttura. guest_name è un puntatore a un'altra posizione di memoria. Provando ad assegnare guest_name al membro della struttura provi qualcosa di impossibile.

Se devi copiare i dati nella struttura devi usare memcpy e amici. In questo caso devi gestire il \0 terminatore.

memcpy(mike.name, guest_name, 20);
mike.name[19] = 0; // ensure termination

Se hai \0 stringhe terminate puoi anche usare strcpy , ma dal name la taglia è 20, suggerirei strncpy .

strncpy(mike.name, guest_name, 19);
mike.name[19] = 0; // ensure termination

mike.name è un array di caratteri. Non puoi copiare gli array semplicemente usando l'operatore =.

Dovrai invece utilizzare strncpy o qualcosa di simile per copiare i dati.

int guest_age = 30;
char guest_name[20] = "Mike";
struct Guest mike = { guest_age };
strncpy(mike.name, guest_name, sizeof(mike.name) - 1);

Hai contrassegnato questa domanda come C++, quindi vorrei sottolineare che in tal caso dovresti usare quasi sempre std::string in preferenza a char[] .