在终端下输入一串ip字符串如:19219219211,ip地址可能是19.219.219.211、192.19.219.211、192.192.19.211和192.192.192.11。

以下是本人造的轮子,代码看起来比较粗糙。

 #include <stdio.h>
#include <string.h> /**
* 检测地址段是否合法
* @param i 个十百位情况,所以情况是0、1和2
* @param addr IP段字符串
* @param buf 输入的IP字符串
* @return 成功返回0,失败返回1
*/
int check_addr(int i, int *addr, char *buf)
{
char temp[];
memcpy(temp, buf, i + );
temp[i + ] = ;
if ((addr[i] = atoi(temp)) > )
return ;
return ;
} int main(int argc, char const **argv)
{
int addr0[], addr1[], addr2[], addr3[]; //个十百位三种情况
char buf[];
int len;
int i, j, k, l;
start:
while (fgets(buf, , stdin) != NULL) {
if (buf[strlen(buf) - ] = '\n')
buf[strlen(buf) - ] = ;
len = strlen(buf);
if (len < || len > ) {
printf("please intput 0~9 num 4 to 12 times\n");
goto start;
}
for (i = ; i < len; ++i) {
if (buf[i] < '' | buf[i] > '') {
printf("please intput 0~9 num 4 to 12 times\n");
goto start;
}
}
//循环不算多,直接嵌套不使用递归。
for (i = ; i < ; ++i) {
if (check_addr(i, addr0, buf) != )
continue;
for (j = ; j < ; ++j) {
if (check_addr(j, addr1, buf + i + ) != )
continue;
for (k = ; k < ; ++k) {
if (check_addr(k, addr2, buf + i + j +) != )
continue;
for (l = ; l < ; ++l) {
if (check_addr(l, addr3, buf + i + j + k+ ) != )
continue;
if (len != i + j + k + l + ) //总位数不符合不输出
continue;
printf("ip address may be: %d.%d.%d.%d\n", \
addr0[i], addr1[j], addr2[k], addr3[l]);
}
}
} }
}
return ;
}

因为每个ip段都只有3种情况:个十百。只要把四段ip段解析出来再校验最后的位数是否一致就可以了。

恢复所有情况的ip地址的更多相关文章

  1. lintcode-【中等】恢复IP地址

    题目 给一个由数字组成的字符串.求出其可能恢复为的所有IP地址.链接. 样例 给出字符串 "25525511135",所有可能的IP地址为: [ "255.255.11. ...

  2. lintcode:恢复IP地址

    恢复IP地址 给一个由数字组成的字符串.求出其可能恢复为的所有IP地址. 样例 给出字符串 "25525511135",所有可能的IP地址为: [ "255.255.11 ...

  3. lintcode-426-恢复IP地址

    426-恢复IP地址 给一个由数字组成的字符串.求出其可能恢复为的所有IP地址. 样例 给出字符串 "25525511135",所有可能的IP地址为: [ "255.25 ...

  4. 转:数据包经由路由转发时源、目的IP地址及MAC地址变化情况

    数据包经由路由转发时源.目的IP地址及MAC地址变化情况.  IP数据包经由路由转发的时候源ip,目的ip,源MAC,目的mac是否发生改变,如何改变?   A—–(B1-B2)—–(C1-C2)—— ...

  5. 两台计算机有相同的IP地址会发生什么情况?两台计算机有相同的MAC地址会发生什么情况?

    1 相同IP   a) 同一网段内   会发生IP地址冲突.两台主机在特定情况下是可以同时使用同一个IP地址的.但是如果这两台主机在同一个网络内,大多数情况下,二者或者其中之一的连通性将会被破坏.比方 ...

  6. 使用Python检测局域网内IP地址使用情况

    来源:https://www.cnblogs.com/donlin-zhang/p/6812675.html 在测试环境搭建的过程中,经常需要给服务器分配静态IP地址,由于不清楚当前局域网内部哪些IP ...

  7. ipconfig显示IP地址情况

    1.以太网适配器 Local Area Connection 若电脑是本地连接,则ipv4地址是本机的ip地址,默认网关一般为本机所连接路由器的地址. 2.无线局域网适配器 Wireless Netw ...

  8. 在不进入Guest OS的情况下,取得Guest OS的IP地址

    因为是个Headless 服务器,总是需要GUI VNC 到 Host OS, 然后进入里面的虚拟机,打 ipconfig / ifconfig  ,非常的不方便. 查了网上,找到上面的方法 1)确保 ...

  9. lintcode - 恢复ip地址

    class Solution { public: /* * @param s: the IP string * @return: All possible valid IP addresses */ ...

随机推荐

  1. HTML5 SVG世界地图

    在线演示 本地下载

  2. MYSQL提权的各种姿势

    一.利用mof提权 前段时间Kingcope大牛发布了mysql远程提权0day,剑心牛对MOF利用进行了分析,如下: Windows 管理规范 (WMI) 提供了以下三种方法编译到 WMI 存储库的 ...

  3. web页面如何打包封闭成手机APP

    所谓的webApp就是html页面跟原生app结合而成的一种应用,这种应用的开发可以节省不少的成本,做出来的app跟原生一样,webApp利用框架技术可以让你有使用app的感觉,具体可以看平安银行的a ...

  4. tomcat绿色版——运行一闪而过的解决方法

    首先配置好jdk的环境变量 %JAVA_HOME%\bin;注意:一定是英文状态下的分号结尾 %TOMCAT%\bin;注意:一定是英文状态下的分号结尾 service.bat install ser ...

  5. java处理图片base64编码的相互转换

    转载自http://www.cnblogs.com/libra0920/p/5754356.html 直接上代码 import sun.misc.BASE64Decoder; import sun.m ...

  6. Hibernate -- 对象关系映射基础

  7. PHP模拟登录发送闪存

    url,post,cookie. 有这三种就可以了. 下面使用Postman模拟发送. 其中,body中是post参数,header中是cookie数据. 下面是php模拟代码. public fun ...

  8. python测试函数的使用时间

    1. 使用装饰器来衡量函数执行时间 有一个简单方法,那就是定义一个装饰器来测量函数的执行时间,并输出结果:(代码通用3.x) import time from functools import wra ...

  9. Redis_01

    http://redis.io/ http://www.yiibai.com/redis/redis_quick_guide.html X

  10. 关于有时候Servlet会被执行两次的问题

    用<a>标签做了下载跳转,为什么点一次,servlet会被执行两次? 写了一个最简单的文件下载 点击超链接向servlet发送一个请求,然后下载该文件.可是每次该servlet都会被访问两 ...