用一个函数获取一张指定的网卡的IP地址

"ip.c" 48L, 1346C                                          
#include <ctype.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main(int argc,char **argv)
{
    FILE    *fp;
    char   buf[512];
    char   *p1,*p2,*p3;     //定义指针
    char   ipaddr[16];
    char   netmask[16];


    fp=popen("ifconfig eth0","r"); //执行可读程序 


    if(fp == NULL)
    {
        printf("popen failure:%s\n",strerror(errno));  //显示出错原因
        return 0;
    }




    while(fgets(buf,sizeof(buf),fp)!=NULL)
    {
        if( (p1=strstr(buf,"inet addr:")) != NULL )
        {


            p2=strchr(p1,':');
            p3=strchr(p2,' ');
            memset(ipaddr,0,sizeof(ipaddr));//消除随机值 
            strncpy(ipaddr,p2+1,p3-p2);//两个指针相减得到中间元素 
            printf("p3-p2-1=%d\n",p3-p2-1);
            printf("p3-p2=%d\n",p3-p2);
      #if 1
            printf("IP address:%s\n",ipaddr);//  
            printf("p2: %s",p2);
            printf("p3: %s",p3);
      #endif
            p2=strrchr(p1,':');
            p3=strrchr(p2,'\n');
            memset(netmask,0,sizeof(netmask));
            strncpy(netmask,p2+1,p3-p2);
            printf("Netmask address:%s\n",netmask);
       }
   }


   pclose(fp);
   return 0;
}


图一为eth1的情况,输出不了
图2为ethod的情况,不同的系统要求不一样






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值