c語言本身是不提供的。
在windows下使用系統命令或windows.h
//列子
#include?"stdio.h"?#include?"conio.h"?
main()?
{?
int?i,j;?
char?ip[20];?
char?temp[100];?
char?ch='\0';?
FILE?*fp;?
system("ipconfig?>d:\\myip.txt");?
if?((fp=fopen("d:\\myip.txt","r"))==NULL)?
{?
printf("the?file?can?not?open:\nPress?any?key?to?exit:");?
getch();?
exit(1);?
}?
for?(i=0;i<7;i++)?
{fgets(temp,80,fp);?/*跳過壹些行*/?
/*printf("%s\n",temp);?*/}?
fgets(temp,80,fp);?
i=0;j=0;?
while?(temp[i++]!=':')?
;?
while?(temp[i]!='\n')?
ip[j++]=temp[i++];?
ip[j]=0;?
printf("IP=%s\n",ip);?
fclose(fp);?
system("del?d:\\myip.txt");?
getch();?
}在Linux下#include?<stdio.h>;?
#include?<sys/types.h>;?
#include?<sys/socket.h>;?
#include?<sys/ioctl.h>;?
#include?<netinet/in.h>;?
#include?<net/if.h>;?
#include?<net/if_arp.h>;?
#include?<arpa/inet.h>;?
#include?<errno.h>;?
#define?ETH_NAME"eth0"?
int?main()?
{?
int?sock;?
struct?sockaddr_in?sin;?
struct?ifreq?ifr;?
sock?=?socket(AF_INET,?SOCK_DGRAM,?0);?
if?(sock?==?-1)?
{?
perror("socket");?
return?-1;?
}?
strncpy(ifr.ifr_name,?ETH_NAME,?IFNAMSIZ);?
ifr.ifr_name[IFNAMSIZ?-?1]?=?0;?
if?(ioctl(sock,?SIOCGIFADDR,?&ifr)?<?0)?
{?
perror("ioctl");?
return?-1;?
}?
memcpy(&sin,?&ifr.ifr_addr,?sizeof(sin));?
fprintf(stdout,?"eth0:?%s\n",?inet_ntoa(sin.sin_addr));?
return?0;?
}