如何使用memcpy初始化struct中的char指针

时间:2018-04-17 03:05:28

标签: c pointers struct memcpy

这就是我定义struct的方式。

struct urlFormat
{
      int port;
      char *host;
      char *path;
      int cat;
      char *status;
};

这是我初始化strcut并为指针分配空间的方法。

struct urlFormat *res;
res = malloc(sizeof(struct urlFormat));

当我使用memcpy()函数时,它报告了分段错误。

char *ptr1 = (char *)url;
  int len = strlen(ptr1);
  memcpy(res->host, ptr1, len);

我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

res->host只是一个指针(它还没有指向任何东西)。

res->host指向某个有效内存之前,您无法memcpy

你可以malloc一些内存res->host = malloc(len + 1);(0终止符+ 1,sizeof(char)总是1,所以省略它)或者在这种情况下只使用res->host = strdup(ptr1); < / p>