Sto cercando di capire come risolvere questo banale problema in C, nel modo più pulito/più sicuro. Ecco il mio esempio:Come assegnare correttamente un nuovo valore di stringa?
#include <stdio.h>
int main(int argc, char *argv[])
{
typedef struct
{
char name[20];
char surname[20];
int unsigned age;
} person;
//Here i can pass strings as values...how does it works?
person p = {"John", "Doe",30};
printf("Name: %s; Age: %d\n",p.name,p.age);
// This works as expected...
p.age = 25;
//...but the same approach doesn't work with a string
p.name = "Jane";
printf("Name: %s; Age: %d\n",p.name,p.age);
return 1;
}
errore del compilatore è:
main.c: In function ‘main’: main.c:18: error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’
capisco che C (non C++) non ha alcun tipo String e utilizza invece array di caratteri, quindi un altro modo per fare questo è stato quello di alterare l'esempio struct per contenere i puntatori di caratteri:
#include <stdio.h>
int main(int argc, char *argv[])
{
typedef struct
{
char *name;
char *surname;
int unsigned age;
} person;
person p = {"John", "Doe",30};
printf("Name: %s; Age: %d\n",p.name,p.age);
p.age = 25;
p.name = "Jane";
printf("Name: %s; Age: %d\n",p.name,p.age);
return 1;
}
questo funziona come previsto, ma mi chiedo se c'è un modo migliore per fare questo. Grazie.
Se dichiariamo struct in 'main()', solo la persona può accedere al suo interno. Prova ad uscire da main per usarlo come globale – EsmaeelE