如何使用 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);
这就是我定义结构的方式。
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);