LINUX下处理文本中的IP网段,把其中的IP地址抽取出来,放到另一个文件中
2010-07-20 16:27
681 查看
]ip_to_int.c #include <stdio.h> #include <stdlib.h> 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
相关文章推荐
- 同一网段中的两台linux A,B; A机设置文件的权限,B通过mount (mount –t nfs ip:/opt/fs /opt/fs)过载A中的文件,无论A机怎样设置文件的权限,B机都可以访
- linux命令-文件文本、查看处理
- Linux下如何处理文本文件内容中的^M
- 同一个文件Linux环境下和windows环境下md5_file处理出来的结果不一致
- 马哥 Linux文本处理和文件查找 笔记
- Linux文本处理---文件属性查找
- LINUX修改、增加IP的方法 ifconfig 两个ip地址 配置文件
- Linux 入门记录:十七、Linux 命令行文本/文件处理工具
- [文件]Linux文本处理常用命令总结
- LINUX修改、增加IP的方法 ifconfig 两个ip地址 配置文件
- 将数据从一个数据库烤出来,想放到另一个数据库,由于某些原因不能直接执行sql文件,笨方法这是一个excel函数
- linux下用文本处理器处理二进制文件后的终端乱码问题
- 用JAVA把文本文件中的数字提取出来求和并输入另一个文件中,文本中有浮点数,整数等
- linux下用文本处理器处理二进制文件后的终端乱码问题
- 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题
- Linux文件查找和文本处理
- 如何把每个文件夹的文件单独提取出来放到另一个文件夹!
- Linux文本处理三剑客之sed
- linux 循环处理文件夹下所有文件脚本
- centOS(linux)系统中,java class文件应该如何放到Tomcat系统中?