我有以下代码来获取主机名和IP地址,
#include <stdlib.h> #include <stdio.h> #include <netdb.h> /* This is the header file needed for gethostbyname() */ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> int main(int argc,char *argv[]) { struct hostent *he; if (argc!=2){ printf("Usage: %s <hostname>\n",argv[0]); exit(-1); } if ((he=gethostbyname(argv[1]))==NULL){ printf("gethostbyname() error\n"); exit(-1); } printf("Hostname : %s\n",he->h_name); /* prints the hostname */ printf("IP Address: %s\n",inet_ntoa(*((struct in_addr *)he->h_addr))); /* prints IP address */ }@H_403_4@但是我在编译期间收到警告:
$cc host.c -o host host.c: In function ‘main’: host.c:24: warning: format ‘%s’ expects type ‘char *’,but argument 2 has type ‘int’@H_403_4@然后在运行代码时出现分段错误:
./host 192.168.1.4 Hostname : 192.168.1.4 Segmentation fault@H_403_4@代码中的错误是什么?