C 获取ipaddress的值

C 获取ipaddress的值,c,linux,C,Linux,我想在变量中获取我的计算机的IP地址 此语句打印我的计算机的IP地址 但我想用一个变量来赋值 如何从inet\u ntoa(inaddrr(ifr\u addr.sa\u data))将ipaddress的值提取到char*类型的变量ip中 printf("IP Address: %s\n", inet_ntoa(inaddrr(ifr_addr.sa_data))); inet\u ntoa已经返回了一个char*——只是它指向一个静态缓冲区,在后续调用中会被覆盖。如果要保存指向的字符串,只

我想在变量中获取我的计算机的IP地址 此语句打印我的计算机的IP地址 但我想用一个变量来赋值 如何从
inet\u ntoa(inaddrr(ifr\u addr.sa\u data))
将ipaddress的值提取到
char*
类型的变量ip中

printf("IP Address: %s\n", inet_ntoa(inaddrr(ifr_addr.sa_data)));

inet\u ntoa
已经返回了一个
char*
——只是它指向一个静态缓冲区,在后续调用中会被覆盖。如果要保存指向的字符串,只需使用
strdup()


完成后,您应该在
ip
上调用
free()。阅读我们在关闭它时链接到的答案。这个问题的可能副本实际上并不是那些问题的副本-它实际上是一个更基本的C问题。
char *ip;
/* ... */
ip = strdup(inet_ntoa(inaddrr(ifr_addr.sa_data)));