使用struct in6_addr的printf ipv6地址和使用u_int32_t的ipv4地址

时间:2014-04-14 11:51:18

标签: c printf ipv6 ipv4

我希望printf类型为struct in6_addr的ipv6地址的值和控制台类型为u_int32_t的ipv4地址。

我尝试过类型转换,但会产生错误

error: aggregate value used where an integer was expected
printf("---------------- ipv4= %zu ipv6 = %zu ",(size_t)ipv4, (size_t)ipv6);

在堆栈溢出和其他地方经历旧问题之后,我还尝试了%s ,%lu以及许多其他方法。

如果有人有解决方案,我将非常感激。

1 个答案:

答案 0 :(得分:5)

in6_addr是一个包含联合的结构,你不能将它强制转换为size_t并希望它能够工作。您应该使用inet_ntop将其转换为人类可读的形式。有关详细信息,请参阅http://www.beej.us/guide/bgnet/output/html/multipage/inet_ntopman.html