c++ - 将值从 char 指针复制到 char 数组

标签 c++ arrays pointers

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

   in_addr * address = (in_addr * )record->h_addr;
    char *ip_address_server = inet_ntoa(* address);

很明显,当我使用 printf 打印它的值时,它打印得很好。

printf("p address %s" , ip_address_server);

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

char host_name[20];

为了复制我使用了 for 循环的值。但是我后来打印的值不是正确的值。

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

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

我的方法有误吗?还有其他解决方法吗?

最佳答案

您的循环不会复制 '\0' 字节。

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

关于c++ - 将值从 char 指针复制到 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3954092/

相关文章:

arrays - Ada 中的数组是协变的吗?

c++ - 为什么数组*新数组;在 C++ 中失败?

arrays - 许多子数组求和查询

c - 指向内存负地址的 C 编译器行为是什么?

C++ - 函数、参数和指针 - 访问冲突

c++ - 试图了解 "pointer to member"

c++ - 插入优先级队列时出现段错误

c++ - QT GUI 水平 slider setValue 与 QElapsedTimer

c++ - Oct 树生成在最后一步出错

Java对象引用问题