程序的目的是找到gets输入的主机 并打印主机名和ip ,程序通过编译运行。
代码如下
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <sys/stat.h>
#include <signal.h>
#include <time.h>


int main(void){
int rc;
char name[20]; //得到的主机名
char ipbuf[16]; // 保存ip地址
struct addrinfo hints,*addr;
memset(&hints,0,sizeof(struct addrinfo));
hints.ai_family=AF_INET;
hints.ai_flags=AI_CANONNAME | AI_ADDRCONFIG;

gets(name); //从输入得要查找的主机名
if((rc=getaddrinfo(name,NULL,&hints,&addr))==0){
do{
printf("ip: %s,host: %s\n",inet_ntop(AF_INET,addr->ai_addr,ipbuf,sizeof(ipbuf)),addr->ai_canonname);
}while((addr=addr->ai_next)!=NULL); //打印找到的主机地址和主机名
return 0;
}
printf("%d\n",rc);//检查出错时的rc值
return 0;
}


程序的问题是 不管输入的主机是非存在 都无法找到主机 返回2.0.0.0 的ip和空主机名

是不是inet_ntop用错了?请高手指点。

终端输出
genius1wjc@ubuntu:~$ gcc egdrgtf.c -o egdrgtf.o
/tmp/cco7gid0.o: In function `main':
egdrgtf.c:(.text+0x4a): warning: the `gets' function is dangerous and should not be used.
genius1wjc@ubuntu:~$ ./egdrgtf.o
www.baidu.com (这是输入)
ip: 2.0.0.0,host: www.baidu.com
ip: 2.0.0.0,host: (null)
ip: 2.0.0.0,host: (null)
ip: 2.0.0.0,host: (null)
ip: 2.0.0.0,host: (null)
ip: 2.0.0.0,host: (null)