在终端下输入一串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. Percona-Server-5.7.16 启动错误

    基于:percona-server-5.7.16 启动报错:  [root@monitor mysql]# ./bin/mysqld_safe --defaults-file=/data/config ...

  2. BeatSaber节奏光剑插件开发官方教程2-简单的插件示例

    原文:https://wiki.assistant.moe/modding/example-mod 一.在开始之前 1 确保你已经看过教你如何添加插件模板的教程,且你已经使用插件模板创建了一个新项目 ...

  3. Oracle数据库的数据导入导出

    --备份数据库--数据库系统用户账号system/adminuser --查看oracle数据库的用户select * from all_users;--查看oracle数据库的版本号select * ...

  4. [mongodb] MMAP 和wiredTiger 的比较

    mongodb 现在有两款存储引擎  MMAPv1 和 WireTiger,当然了除了这两款存储引擎还有其他的存储引擎了. 如: 内存引擎:现在的mongodb 版本中已经有了,主要的cache 服务 ...

  5. SpringBoot2.0+ElasticSearch网盘搜索实现

    1.ES是如何实现分布式高并发全文检索 2.简单介绍ES分片Shards分片技术 3.为什么ES主分片对应的备分片不在同一台节点存放 4.索引的主分片定义好后为什么不能做修改 5.ES如何实现高可用容 ...

  6. apache kafka配置中request.required.acks含义

    Kafka producer的ack有3中机制,初始化producer时的producerconfig可以通过配置request.required.acks不同的值来实现. 0:这意味着生产者prod ...

  7. npm和git代理

    npm 删除代理设置:npm config delete proxynpm config delete https-proxynpm 设置代理:npm config set proxy http:// ...

  8. WebService是什么?以及工作原理

    WebService 就是一个应用程序,向外界暴露出公开的API使别人其能在WEB对其进行远程调用,具有跨平台和跨语言的等特点,采用Internet的Http协议进行客户端与服务器之间的交互 由XML ...

  9. mysql 自查询

    先介绍用法: 用法解释  select  * from  a,b  : shopping 商品表 , baixitest SELECT b.name from shopping as a, baixi ...

  10. WinForm 创建与读写配置文件

    (转自:http://www.cnblogs.com/SkySoot/archive/2012/02/08/2342941.html) 1. 创建 app.config 文件: 右击项目名称,选择“添 ...