gpt4 book ai didi

c - inet_ntoa 的段错误

转载 作者:太空狗 更新时间:2023-10-29 17:05:06 27 4
gpt4 key购买 nike

    #include <stdio.h> 
#include <string.h> /* for strncpy */
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <net/if.h>

int
main()
{
int fd;
struct ifreq ifr;

fd = socket(AF_INET, SOCK_DGRAM, 0);

/* I want to get an IPv4 IP address */
ifr.ifr_addr.sa_family = AF_INET;

/* I want IP address attached to "eth0" */
strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);

ioctl(fd, SIOCGIFADDR, &ifr);

close(fd);

/* display result */
char* ipaddr;
ipaddr = inet_ntoa(((struct sockaddr_in *)&(ifr.ifr_addr))->sin_addr);
printf("%s\n", ipaddr);

return 0;
}

对于这一行:

     ipaddr = inet_ntoa(((struct sockaddr_in *)&(ifr.ifr_addr))->sin_addr);         

我明白了

iptry.c: In function ‘main’:
iptry.c:31:9: warning: assignment makes pointer from integer without a cast [enabled by default]

为了

     printf("%s\n", ipaddr);

我遇到段错误。

这是怎么回事?

最佳答案

inet_ntoa在 header 中定义 <arpa/inet.h> ,
需要#include ,否则会出错

关于c - inet_ntoa 的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15635803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com