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

how to use memcpy to initialize a char pointer in struct

这就是我定义结构的方式。

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

这就是我初始化 strcut 并为指针分配 space 的方式。

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

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

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

不知道怎么解决

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

res->host 指向某个有效内存之前,您不能 memcpy 指向它。

您可以 malloc 一些内存 res->host = malloc(len + 1);(+1 表示 0 终止符,而 sizeof(char) 始终为 1,因此请忽略它)或者在这种情况下只需使用 res->host = strdup(ptr1);