我想了解如何在C中以最清潔/最安全的方式解決這個微不足道的問題。這是我的例子:如何正確分配一個新的字符串值?
#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;
}
編譯器的錯誤是:
main.c: In function ‘main’: main.c:18: error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’
據我所知,C(不是C++)沒有字符串類型,而是使用字符數組,所以另一種方式來做到這一點是改變的例子結構保持字符的指針:
#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;
}
可正常工作,但我不知道是否有這樣做更好的方法。謝謝。
如果我們在'main()'中聲明結構體,那麼只有人可以在裏面訪問它。 嘗試從主要移出使用它作爲全球 – EsmaeelE 2018-03-03 19:58:27