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 ; #include ; #include ; #include ; #include ; #include ; #include ; #include ; #include ; #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; }
取消
评论