在终端下输入一串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. PHP面向对象程序设计之接口(interface)

    接口(interface)是抽象方法和静态常量定义的集合.接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量. 为什么说接口是一种特殊的抽象类呢?如果一个抽象类里面的所有的方法都是抽象方法, ...

  2. hadoop中mapreduce的默认设置

    MR任务默认配置: job.setMapperClass() Mapper Mapper将输入的<key,value>对原封不动地作为中间结果输出 job.setMapperOutputK ...

  3. codeforces 703B

    题意:有n座城市,其中k座是省会城市,每个城市有对应的点权,城市1-2-3-...-n-1有一条路相连,省会城市与其他所有的城市相连,且每两个城市间最多有一条路,每条路的边权为路连接的两座城市的点权乘 ...

  4. cmd下进入oracle sqlplus

    1.sqlplus /nolog 2.connect sys/orcl@ORCL as sysdba 3.select sysdate from dual exit;

  5. rhel yum报错

    用yum报错 http://mirrors.aliyun.com/centos/%24releasever/addons/x86_64/repodata/repomd.xml: [Errno 12] ...

  6. Linux 通过进程Pid与端口互查

    ps -aux 状态详解 https://blog.csdn.net/whatday/article/details/54409387. linux下通过进程名查看其占用端口: https://www ...

  7. css tips —— 神奇的max-width,min-width, width覆盖规则

    max-width在比width小时,即使width使用!important来加权,仍会max-width生效: max-width比min-width小时,width < min-width, ...

  8. java枚举和constant使用区别

    本文结合<Effective Java>第六章前半部分关于枚举的介绍和自己的理解及实践,讲解了Java枚举的知识点.文章发布于专栏Effective Java,欢迎读者订阅. 前言  你代 ...

  9. 51nod-1201-数位dp

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1201 1201 整数划分 基准时间限制:1 秒 空间限制:131072 ...

  10. 删除 mac 垃圾桶内清除不掉的文件

    命令行 内 $ sudo rm -rf ~/.Trash/