将char指针中的值复制到char数组

w2l*_*ame 4 c++ arrays pointers

我有一个指针*ip_address_server,它保存服务器的IP地址:

   in_addr * address = (in_addr * )record->h_addr;
    char *ip_address_server = inet_ntoa(* address);
Run Code Online (Sandbox Code Playgroud)

显然,当我使用printf打印它的值时,它会被很好地打印出来.

printf("p address %s" , ip_address_server);
Run Code Online (Sandbox Code Playgroud)

但是现在如果我声明一个大小为20的数组来保存该值,那么我需要将指针中的内容复制到数组中.

char host_name[20];
Run Code Online (Sandbox Code Playgroud)

要复制我使用for循环的值.但是我后来打印的值不是正确的值.

for(int i = 0; ip_address_server[i] != '\0'; i++) 
        host_name[i] = ip_address_server[i];
    printf("hostname %s \n" , host_name);
Run Code Online (Sandbox Code Playgroud)

我认为终止条件有一些错误.

我的做法是错的,还是有其他替代方法?

wkl*_*wkl 5

你的循环不会复制'\0'字节.

另外,你为什么不使用strcpy(或更安全strncpy)或memcpy