识别有效的IP地址和掩码并进行分类统计
该题我的想法是把每一个ip看出一个整数,将读取得到的数据一一与给定的ip范围比较即可。另外本题应该注意的地方是scanf读取俩字符串的方法。
代码如下:
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std; unsigned long long range[][] = {
{,},
{,},
{,}, {,},
{,},
{,},
{,},
{,},
}; int explain(char* ip){
int expect = ;
int cnt = ;
for(int i = ; i < strlen(ip) ; i ++){ if(ip[i] >= '' && ip[i] <= ''){
expect = ;
}
else{
if(expect == ) return -;
expect = ;//下一个字符必须是数字
cnt ++;
}
}
if(cnt != ) return -;// 必须有三个.符号
return ;
} int main(){
char ip[] , code[];
int a = , b = , c = , d = , e = ,eip = , sip = ;
int cnt = ;
while(scanf("%[^~]~%s",ip,code) != EOF){
int cds = explain(code);
int flag = ;
if(cds > ){
int aa[];
sscanf(code , "%d.%d.%d.%d" , &aa[],&aa[],&aa[],&aa[]);
if(aa[] > || aa[] > || aa[] > || aa[] > || (aa[] == && aa[] == && aa[] == &&aa[]== )){
//qudiao 255.255.255.255 以及在某个位上大于255的不合法的mask
eip ++;
flag = ;
}
int exp = ;
for(int i = ; !flag && i < ; i ++){
if(exp == && aa[i] || aa[i] > ){
eip ++;
flag = ;
break;
}
int a1 = aa[i];
if(a1 < ){
if(a1 == || a1 == || a1 == || a1 == || a1 == || a1 == || a1 == ){
exp = ;
}else if(a1 == && i > ){
exp = ;//去除0.0.0.0
}
else{
eip ++;
flag = ;
break;
}
}
}
}else{
flag = ;
eip ++;
}//end
if(flag == ){
int ips = explain(ip);
if(ips > ){ int a1 , b1 ,c1 ,d1;
sscanf(ip , "%d.%d.%d.%d" , &a1,&b1,&c1,&d1);
if(a1> || b1 > || c1 > || d1 > ){
eip++;
flag = ;
}
if(flag == ){
long long ans = a1*1e9 + b1*1e6 + c1*1e3 + d1;
//cout<<ans<<endl;
int i = ;
for( ; i < ; i ++){
if(ans <= range[i][] && ans >= range[i][]){
// cout<<i<<endl;
if(i == ) a ++;
if(i == ) b ++;
if(i == ) c ++;
if(i == ) d ++;
if(i == ) e ++;
if(i == || i == || i == ) sip ++;
//break;
}
}
}
}else{
eip ++;
}
}
memset(ip,'\0',sizeof ip);
memset(code,'\0',sizeof(code));
getchar();
}
printf("%d %d %d %d %d %d %d\n",a,b,c,d,e,eip,sip);
return ;
}
识别有效的IP地址和掩码并进行分类统计的更多相关文章
- 26:IPMaskCheck识别有效的ip地址和掩码并分类统计
题目描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.2 ...
- 识别有效的IP地址和掩码并进行分类统
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; int c ...
- 算法 识别有效ip地址和掩码并做统计
题目描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.2 ...
- Python 输入IP地址及掩码告诉你该网段包含的全部地址(IPy模块练习)
IPy模块原本使用时需要输入正确的网络位和掩码,我利用处理报错的机制实现了输入任意IP地址和掩码均可正确输出结果的小程序. #!/usr/bin/env python # -*- coding: ut ...
- 设置ip地址、掩码、网关、DNS
@echo offcolor f8mode con cols=40 lines=8echo.echo.echo 设置IP为:echo.set /p ip= 192. ...
- 根据Ip地址与掩码 得出 子网地址与广播地址
由于给予条件优先,没有直接给出子网地址与广播地址.但是又需要这两个参数,需要我们使用ip 地址与 子网掩码得出子网地址与广播地址.思路如下: 1. 子网地址, ip地址与 子网掩码分别换算 ...
- IP地址分类与识别错误
//描述: 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. //所有的IP地址划分为 A,B,C,D,E五类 //A类地址1.0.0.0 ...
- MAC地址与IP地址的区别
介绍一下MAC地址的知识,MAC地址和IP地址的区别以及MAC地址在实际应用中所涉及到的安全问题. 一.基础知识 如今的网络是分层来实现的,就像是搭积木一样,先设计某个特定功能的模块,然后把模块拼起来 ...
- IP地址的分类与寻址
IP地址:有一种标识符,被TCP/IP协议簇的IP层用来标识 连接到因特网的设备.IP协议的第4版IPv4地址是32位地址,是连接地址,定义了每一个连接到因特网上的设备(可以认为是主机的别名),而不是 ...
随机推荐
- javaScript 相关笔记
1.js中对象复制 思路:将js对象先转成json字符串,然后再将json字符串转换为两个对象
- Ax 导出EXCEL给范围内的每个单元格加边框
1. 首先在Class\SysExcelRange加画边框的方法 思路用EXCEL录宏的功能得到给一批单元格画格子的VBA代码,在AX将对象转为COM对象,基本VBA代码也能装为AX内能用的内容. p ...
- svn记录删除
Delete SVN Folders.reg 批量删除文件夹里的SVN 文件 ------------------------------------------------------------- ...
- Flex使用Blazeds与Java交互及自定义对象转换详解-DATAGRID读取ORACLE数据
http://www.cnblogs.com/RocD-DuPeng/articles/1751040.html 一.建立Flex与Java交互的工程. 本文中讲到的交互是利用Blazeds的,因为这 ...
- Application、 session、iewstate,以及repeater 的commang用法
Session:在不同的浏览器之间传值,像银行之类的网站为了安全把用户名密码保存在session里面.每一台电脑访问服务器,都会是独立的一套session,key值都一样,但是内容都是不一样的 以 ...
- hashMap的get()方法,错用并发造成cpu和负载高
一次线上问题的解决 线上发现服务cpu使用达到98%,负载高达200多,64核心cpu,下面介绍解决过程: 1.top命令查出占用cpu高的进程pid 2.使用jstack -l pid >du ...
- htnl5中设置文本单行显示,超出部分打省略号,鼠标移到文本时alt出全部文本内容
Html代码: 1.<span class="my-span" title="无数无数无数无数无数">机构</span> Css样式: ...
- 【转载】[C#]Log4net中的RollingFileAppender解析
Log4日志组件的应用确实简单实用,在比较了企业库和Log4的日志功能后,个人觉得Log4的功能更加强大点.补充说明下,我使用的企业库是2.0版本,Log4net是1.2.1版本的. 在Log4net ...
- 解决错误 Cannot await in the body of a catch clause
解决错误 Cannot await in the body of a catch clause static async Task f() { ExceptionDispatchInfo ca ...
- 生成CIL的问题
private void testILMethod() { InventCountPlanLine planLine; ; update_recordSet planLine setting Coun ...