LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 885|回复: 8

帮忙看一下这个C程序,谢谢了!

[复制链接]
发表于 2003-4-26 17:15:34 | 显示全部楼层 |阅读模式
帮忙看看这个程序,第十七行的错误该怎么改啊?
我改了半天也没改对.
谢谢了.
这里是编译时出现的错误
后面是程序源代码.

[yttx@localhost programe]$ gcc getlocal_infor.c -o getlocal_infor
getlocal_infor.c: In function `main':
getlocal_infor.c:17: warning: assignment makes pointer from integer without a cast
getlocal_infor.c:20: dereferencing pointer to incomplete type
getlocal_infor.c:22: dereferencing pointer to incomplete type
[yttx@localhost programe]$

#include <stdio.h>
#include <sys/utsname.h>
int main()
{
  struct hostent *h;
  struct utsname myname;
  
  if(uname(&myname)<0)
  return 1;
   
  printf("sysname: %s\n",myname.sysname);
  printf("nodename:%s\n",myname.nodename);
  printf("release:%s\n",myname.release);
  printf("version:%s\n",myname.version);
  printf("machine information:%s\n",myname.machine);
/*  就是这一行,如果这样写h=gethostbyname(myname.nodename);,错误是一样的*/
  h=gethostbyname((char *)myname.nodename);

  char **addr;
  addr=h->h_addr_list;
  printf("IP Address is:\n");
  printf("%s\n",inet_ntoa(*(struct in_addr *)*addr));
   
  return 0;
}
发表于 2003-4-26 18:18:48 | 显示全部楼层
char *host="xxxxxxx";
gethostbyname(host);
 楼主| 发表于 2003-4-27 10:29:01 | 显示全部楼层
gethostbyname(str)这里没有错误
str只要是一个字符串的地址即可

问题现在已经解决了
就加了一个头文件的netdb.h?

但我不知道为什么
那位可以为我解释一下原因,谢谢了
发表于 2003-4-27 11:47:12 | 显示全部楼层
你自己看看netdb.h中定义了什么不就清楚了。
 楼主| 发表于 2003-4-27 18:26:36 | 显示全部楼层
到哪里去看?
谢谢了
发表于 2003-4-27 19:50:48 | 显示全部楼层
在/usr/include下。
发表于 2003-4-29 09:02:01 | 显示全部楼层
struct hostent好像是在netdb.h里定义的吧。
发表于 2003-4-29 14:11:26 | 显示全部楼层
如果你能细心一点,man 一下gethostbyname,就会发现这样的定义:
SYNOPSIS
       #include <netdb.h>
       extern int h_errno;
       struct hostent *gethostbyname(const char *name);
       #include <sys/socket.h>        /* for AF_INET */
       struct hostent *gethostbyaddr(const char *addr, int len, int type);
       void sethostent(int stayopen);
       void endhostent(void);
       void herror(const char *s);
       const char * hstrerror(int err);
 楼主| 发表于 2003-4-30 22:35:10 | 显示全部楼层
为什么不提示函数没定义呢?
这样的warning容易误导人啊
我一直以为是自己的语法上的错误呢
“类型不匹配”
左改又改也不对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表