Ich versuche zu verstehen, wie man dieses triviale Problem in C auf die sauberste/sicherste Weise löst. Hier ist mein Beispiel:Wie ordne ich einen neuen Stringwert korrekt zu?
#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;
}
Die Fehler des Compilers ist:
main.c: In function ‘main’: main.c:18: error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’
Ich verstehe, dass C (nicht C++) keine String-Typ hat und verwendet stattdessen Arrays von Zeichen, so eine andere Art und Weise, dies zu tun war, verändern das Beispiel struct Zeiger von Zeichen zu halten:
#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;
}
Dies funktioniert wie erwartet, aber ich frage mich, ob es einen besseren Weg, dies zu tun. Vielen Dank.
Wenn wir struct in 'main()' deklarieren, kann nur eine Person darauf zugreifen. Versuchen Sie, aus dem Haupt herauszuziehen, um es als global zu verwenden – EsmaeelE