C 将IP地址转换为文本形式时出现分段错误

C 将IP地址转换为文本形式时出现分段错误,c,linux,berkeley-sockets,C,Linux,Berkeley Sockets,我正在尝试将连接到我的服务器的任何客户端的IP地址转换为文本格式,如下所示: struct sockaddr_in *client_addr = NULL; socklen_t addrlen = sizeof(struct sockaddr_in); char client_ip[INET_ADDRSTRLEN]; printf("Waiting for incomming connections!\n"); if ((client.fd = acce

我正在尝试将连接到我的服务器的任何客户端的IP地址转换为文本格式,如下所示:

    struct sockaddr_in *client_addr = NULL;
    socklen_t addrlen = sizeof(struct sockaddr_in);
    char client_ip[INET_ADDRSTRLEN];

    printf("Waiting for incomming connections!\n");
    if ((client.fd = accept(server_fd, (struct sockaddr *) client_addr, &addrlen)) < 0)
    {
        perror("Accept() API failed.");
        continue;
    }

    // Convert Client address from binary to text.
    strcpy(client_ip, inet_ntoa(client_addr->sin_addr));

那么问题出在哪里呢?

看起来您必须为客户端地址分配空间(使用malloc)

答案上有一些代码:

看起来您必须为客户端地址分配空间(使用malloc)

答案上有一些代码:

您尚未为
客户端地址分配内存。
可能只是

struct sockaddr_in client_addr
而不是

 struct sockaddr_in *client_addr = NULL;

您尚未为
客户端地址
分配内存。
可能只是

struct sockaddr_in client_addr
而不是

 struct sockaddr_in *client_addr = NULL;