博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法题:判断字符串是否为 ipv4 地址
阅读量:6718 次
发布时间:2019-06-25

本文共 2175 字,大约阅读时间需要 7 分钟。

#include 
typedef char bool;#define true 1#define false 0/** 1.判断字符串是否形如“192.168.1.1” 2.字符串两端含有空格视为合法ip,形如“ 192.168.1.1 ” 3.字符串中间含有空格视为非法ip,形如“192.168. 1.2” 4.字符串0开头视为不合法ip,形如192.168.01.1 5.字符串0.0.0.0视为合法ip */bool checkIpv4(const char *ip){ printf("检验对象是:%s\n", ip); if(NULL == ip) { return false; } const char *q = ip; //字串指针 unsigned short int s = 0, count = 0, digitNumber = 0; //s是字串转化为的整型,count是 . 的个数, digitNumber 是 . 之间的数量 bool hasZero = false; // 开头有空格 while(' ' == *q) { q++; } while('\0' != *q) { if('.' == *q) { // . 前面没有任何值,则非法 if(digitNumber == 0) { return false; } s = 0; digitNumber = 0; count++; hasZero = false; q++; continue; } // 值非法 if(*q < '0' || *q > '9') { // 结尾空格 if(' ' == *q && 3 == count) { const char *qq = q; while(' ' == *qq) { qq++; } return '\0' == *qq; } else{ return false; } } int x = *q - '0'; s = s*10 + x; // 0.0.0.0 合法, 00.0.0.0 不合法 if(0 == s) { if(hasZero) { return false; } else{ hasZero = true; } } if(s > 255) { return false; } digitNumber++; q++; } return (3 == count);}int main(void){ { const int count = 10; char *ip[count] = {"0.0.0.0", "255.255.255.255", "0.10.0.0", " 1.1.1.1", "1.1.1.1 ", " 1.1.1.1 "}; for(int i = 0; i < count; i++) { if(checkIpv4(ip[i])) printf("该地址是IPv4地址\n"); else printf("该地址不是IPv4地址\n"); } } printf("\n\n"); { const int count = 10; char *ip[count] = {"1.1.1. 1", "1..2.3", "00.1.1.1", "a.1.1.1", }; for(int i = 0; i < count; i++) { if(checkIpv4(ip[i])) printf("该地址是IPv4地址\n"); else printf("该地址不是IPv4地址\n"); } } return 0;}

转载地址:http://tnymo.baihongyu.com/

你可能感兴趣的文章
Flutter 环境搭建以及创建第一个APP遇到的坑
查看>>
mybatis连表查询
查看>>
【跃迁之路】【694天】程序员高效学习方法论探索系列(实验阶段451-2019.1.14)...
查看>>
[中级] Func() 和 ObjBindMethod() 的关系
查看>>
垃圾回收机制
查看>>
C语言实现一个简易的Hash table(6)
查看>>
【javascript】实现模板生成大量数据
查看>>
win32拖拽编程
查看>>
使用 LineBasedFrameDecoder 和 StringDecoder 解决半包粘包问题
查看>>
分布式缓存Redis使用心得
查看>>
【修真院“善良”系列之三】技术面试的时候该怎么样介绍自己?
查看>>
聊聊flink的EventTime
查看>>
TypeScript 类
查看>>
React 的几种条件渲染以及选择
查看>>
MongoDB查看执行计划
查看>>
Redis学习笔记二:使用Jedis简单操作reids数据库
查看>>
Netty NioEventLoop 启动过程源码分析
查看>>
机器学习在客户管理场景中的应用
查看>>
PHP导出数据到表格的实例
查看>>
php 后端实现JWT认证方法
查看>>