如何使用struct指针设置char名称?

时间:2018-04-03 07:04:06

标签: c

struct player {
    char name[20];
    struct player *next;
};

int main() {
  struct player *p;
  p.name = "bob";
}

错误:在非结构或联合的情况下请求成员'name'

如何设置带结构的字符名称?

2 个答案:

答案 0 :(得分:0)

在那段小代码中,你有多个问题。

首先,关于你得到的错误,几乎任何一本书或教程,无论好坏,都应该告诉你。您需要使用“箭头”运算符->,如p->name

但是你会得到另一个错误,因为你不能分配给一个数组,只有copy

当完成后,你还有一个错误,那就是你使用了一个未初始化的指针。未初始化的局部变量(p)实际上是未初始化的。他们的价值将是不确定并且看似随意。尝试取消引用(使用->执行的操作)这样的指针将导致undefined behavior

简而言之,我建议你回到教科书,从头开始重新开始。

答案 1 :(得分:0)

最简单的解决方法是不将p声明为结构的指针,而是实际的结构....然后使用strcpy()设置nameC不像其他编程语言那样使用=进行字符串赋值。

struct player {
    char name[20];
    struct player *next;
};

int main() {
  struct player p;
  strcpy(p.name, "bob");
}