ip_to_int.c #include #include unsigned int calcuIP(char* sIP); int main() { unsigned int ip_int; FILE *fin; // FILE *fout; char namein[]="ip_net"; // 文件名 // char nameout[]="ip_individual"; char *one_line; // 读入的一行 int buff_size=120; //根据最长行字符定大小 if( ( fin = fopen(namein, "r") ) == NULL ) { printf("can not open file %s/n",namein); exit (-1); }; /*if( ( fout = fopen(nameout, "a+") ) == NULL ) { printf("can not open file %s/n",nameout); exit (-1); };*/ one_line = (char *)malloc(buff_size*sizeof(char)); while (fgets(one_line, buff_size,fin) !=NULL) { //printf("I read: %s",one_line); // 读一行打一行 ip_int=calcuIP(one_line); for(int j=1;j<255;j++) { ip_int=ip_int+1; //putw(ip_int,fout); printf("%u/n",ip_int); } }; // char *str="118.116.0.0"; // ip_int=calcuIP(str); // printf("%d",a); fclose(fin); //fclose(fout); return 1; } unsigned int calcuIP(char* sIP) { unsigned int res=0; char *p=sIP; char tmp[4]; int i=0; for(i=0;i<4;i++) { int j=0; while((*p!='.')&&(j<4)) { tmp[j]=*p++; j++; } p++; tmp[j]='/0'; res=res*256+atoi(tmp); } return res; }

编译的时候,提示C99错误,提示我那个for循环有问题。可以这样编译:

gcc -o ip_to_int ip_to_int.c --std=c99

执行 ./ip_to_int 就会把IP地址一行一行的输出到屏幕,可以重定向一下,让它输入到一个文件中

./ip_to_int  > ip.txt

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐