0

我有这两个结构:

struct member {
  char *nickname;
  char *group;
};

struct node {
   struct member mbr;
   struct node   *next;
};

在我的代码中,我这样做:

struct node* n = (struct node*)malloc(sizeof(struct node));

当我运行程序时,在这一行出现“分段错误”错误:

strcopy(n->mbr.nickname, temp->nickname);

我已经尝试了一段时间来解决这个问题,并且我在网上搜索过,但我还没有找到任何解决方案。我猜'n'里面的结构没有初始化。我做了一些看起来像的测试:

n->mbr = (struct member*)malloc(sizeof(struct member));

但后来我得到另一个错误:“从类型'struct member *'分配给类型'struct member'时类型不兼容”......

谁能告诉我我做错了什么?谢谢。

4

1 回答 1

2

你不需要分配mbr;你需要分配mbr.nickname.

struct node* n = malloc(sizeof (struct node));
n->mbr.nickname = malloc(some number of characters);

然后使用. 或者,strncpy

n->mbr.nickname = strdup(temp->nickname);

这与这样做相同,但使用strlen(temp->nickname) + 1大小。

于 2013-10-20T23:02:20.330 回答