在终端下输入一串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. Block作为返回值时的使用

    昨天使用一个小例子简单说明了下Block作为参数时的使用. 今天再来复习一下Block作为返回值使用时的情况,先贴一小段热门第三方框架Masonry的官方sample code: [view1 mas ...

  2. codeforces 738

    D: 题意:一行1*n的格子放船只,船数为a,船的长度为b,每格为0或1,1表示该格并不是船只的一部分,找出最少的格子数使得射击这些格子至少能打中一艘船. 思路:船的长度为b,即每段连续的长度为b的0 ...

  3. centos7 部署 dotnetcore

    一.在centos上下载dotnetcore SDK 二. 选择Linux发行版安装 按上面的步骤安装,在centos终端输入dotnet --version 显示版本信息即安装成功

  4. const作用

    const有以下几个作用: 1. 定义const常量,具有不可变性.eg. const int MAX = 100;  int Array[MAX]; 2. 进行类型检查,使编译器对处理内容有更多的了 ...

  5. 运行jar_测试代码

    1.Eclipse 将 工程 导出成 jar Eclipse --> Export... --> 界面中树状图形中选择" Java下的'JAR file' "(不知道这 ...

  6. Gulp实例(包括环境搭建的自动检测)

    # Gulp实例(包括环境搭建的自动检测) Gulp是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务.下面我将完成如下的功能点并且附上源码: CSS文件打包 less文件打包 s ...

  7. 图片加载之Picasso使用

    简介 Picasso是Square公司开源的一个Android图形缓存库,可以实现图片下载和缓存功能. 主要有以下一些特性: 在Adapter中回收和取消已经不在视野范围图片资源的加载,防止可能出现的 ...

  8. 本地测试ajax遇到的跨域问题

    浏览器console问题描述:Cross origin requests are only supported for protocol schemes: http, data, chrome, ch ...

  9. mysql数据库优化课程---10、mysql数据库分组聚合

    mysql数据库优化课程---10.mysql数据库分组聚合 一.总结 一句话总结:select concat(class,' 班') 班级,concat(count(*),' 人') 人数 from ...

  10. Codeforces Round #250 (Div. 2)D

    给你一张无向图,每个点有一个权值,对于一条从l到r 的边权值是l到r路径上最小的点的权值,(多条路取最大的权值),然后求每两个点之间的权值和/点对数 题解:并查集维护,先从点大的边排序,然后依次加边, ...