使用C语言命名linux机器的服务器IP

使用C语言命名linux机器的服务器IP,c,linux,dns,nameservers,C,Linux,Dns,Nameservers,我必须使用C语言获取我的系统的名称服务器IP。我使用的是Linux机器 我试过了 #include <stdio.h> #include <netinet/in.h> #include <arpa/nameser.h> #include <resolv.h> #include <sys/types.h> #include <sys/param.h> #include <sys/cdefs.h> int mai

我必须使用C语言获取我的系统的名称服务器IP。我使用的是Linux机器

我试过了

#include <stdio.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>
 #include <sys/types.h>
#include <sys/param.h>
#include <sys/cdefs.h>

int main()
{
int res_init(void);
printf("_res.nscount %d\n",_res.nscount);
//printf("_res.nsaddr_list[0] %s\n",_res.nsaddr_list[0]);
return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
int main()
{
int res_init(无效);
printf(“\u res.nscount%d\n”,\u res.nscount);
//printf(“\u res.nsaddr\u list[0]%s\n”,\u res.nsaddr\u list[0]);
返回0;
}
但是我得到了
\u res.nscount
作为
0
。我做错了什么吗?

您声明了res\u init()而不是调用它。尝试:

Int main() 
{
  res_init();
  /* ... */
但是,nsaddr_列表[0]不是字符串,因此无法使用printf(“%s”)打印它。您必须使用inet_ntoa()或类似工具将其sin_addr.s_addr值转换为可打印字符串。

您声明了res_init(),而不是调用它。尝试:

Int main() 
{
  res_init();
  /* ... */
但是,nsaddr_列表[0]不是字符串,因此无法使用printf(“%s”)打印它。您必须使用inet_ntoa()或类似工具将其sin_addr.s_addr值转换为可打印字符串。

您声明了res_init(),而不是调用它。尝试:

Int main() 
{
  res_init();
  /* ... */
但是,nsaddr_列表[0]不是字符串,因此无法使用printf(“%s”)打印它。您必须使用inet_ntoa()或类似工具将其sin_addr.s_addr值转换为可打印字符串。

您声明了res_init(),而不是调用它。尝试:

Int main() 
{
  res_init();
  /* ... */

但是,nsaddr_列表[0]不是字符串,因此无法使用printf(“%s”)打印它。您必须使用inet_ntoa()或类似工具将其sin_addr.s_addr值转换为可打印字符串。

/etc/resolv.conf
中有什么内容?在你的问题中添加
cat/etc/resolv.conf
。你在
/etc/resolv.conf
中有什么?在你的问题中添加
cat/etc/resolv.conf
。你在
/etc/resolv.conf
中有什么?在你的问题中添加
cat/etc/resolv.conf
。你在
/etc/resolv.conf
中有什么?在问题中添加
cat/etc/resolv.conf