#include <stdio.h>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.15.字符串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");elseprintf("该地址不是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");elseprintf("该地址不是IPv4地址\n");}}return 0;
}

算法题:判断字符串是否为 ipv4 地址相关推荐

  1. 算法题解——将字符串转化为ip地址

    算法题解--将字符串转化为ip地址 题目描述 现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况. 例如: 给出的字符串为"25525511135", ...

  2. 判断字符为空_算法题:字符串转换整数 (atoi)

    题目描述 题解 分析 他人更优解 一.题目描述 二.题解 import math class Solution:def myAtoi(self,str):str = str.strip() #去除字符 ...

  3. 经典算法题 -- 判断单链表是否成环及寻找成环节点

    引言 判断单链表是否成环是一个计算机领域的经典算法问题 如何通过程序判断传入的链表是否存在环,并且求出环长度.成环点等问题 下面就是一个存在环的单链表 基本算法 -- hash 最简单的方法是创建一个 ...

  4. PHP判断字符串是否是ipv4还是ipv6

    判断字符串是否是ip非常简单 判断IP: $ip = '192.168.1.1'if (filter_var($ip, \FILTER_VALIDATE_IP)) {echo $ip;} 判断IPv4 ...

  5. 正则表达式判断是否mac地址 java_使用正则表达式判断字符串是否为MAC地址

    今天Boss给了一个小任务,要求给定一个字符串,判断该字符串是否是MAC地址,并用Java和正则表达式实现.于是我顺便百度了下MAC地址,并在cmd下使用getmac获取本机的MAC地址,了解了一点后 ...

  6. 通关算法题之 ⌈字符串⌋

    字符串 171. Excel 表列序号 给你一个字符串 columnTitle ,表示 Excel 表格中的列名称,返回该列名称对应的列序号. A -> 1 B -> 2 C -> ...

  7. leetcode算法题--环绕字符串中唯一的子字符串★

    原题链接:https://leetcode-cn.com/problems/unique-substrings-in-wraparound-string/ 思路是dp数组保存以26个字母为结尾的子字符 ...

  8. 算法题11 字符串的所有对称子串

    题目 给定一个字符串,求其中所有的对称子串 分析 对称字符串无非两种情况,一是以1个字符为中心对称,如"abcba",一是完全对称,如"abccba".对于字符 ...

  9. leetcode算法题--反转字符串

    原文链接:https://leetcode-cn.com/problems/reverse-string/ 双指针法 void reverseString(vector<char>& ...

最新文章

  1. Nature:全球表层土微生物组群落结构和功能
  2. 第十六届智能车竞赛华南赛区纪实
  3. (最新合集)计算机网络谢希仁第七版 第一章课后答案
  4. 常见算法及问题场景——图
  5. 前端学习(2226):react之状态
  6. 修改linux远程主机名命令hostname
  7. 如何配置Mac OS X实现LAN唤醒?
  8. 汇编和c语言混合的dsp程序,dsp实验三 编写一个C语言和汇编混合的DSP程序
  9. Github多人协作
  10. 随手写的一些好用的功能(不定时更新)
  11. Python版 孤勇者 | 画图+演奏+音乐可视化
  12. 排序算法7——归并排序
  13. VUE 查找数组中符合条件的对象
  14. 反恐精英枪王对决 服务器维护6,反恐精英之枪王对决
  15. 在GitHub,他们是怎么玩的? (转)
  16. crack与split的区别_Split or Crack? Split 和 Crack 两词的区别(
  17. 《C语言程序设计》(谭浩强第五版) 第8章 善于利用指针 习题解析与答案
  18. 基于java基于微服务架构的设备管理系统的设计与实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  19. CH9121串口转以太网模块STM32驱动
  20. PPK大疆无人机应用教程

热门文章

  1. Springmvc,Spring MVC文件上传
  2. C++ new和malloc的区别
  3. 用Python去除扫描型PDF中的水印
  4. 《Python Cookbook 3rd》笔记(1.5):实现一个优先级队列
  5. Python中yield简单用法
  6. Java JUC工具类--Exchanger
  7. python -m xxx.py和python xxx.py的区别
  8. Linux 线程占用CPU过高定位分析
  9. 2016年CCF第七次测试 俄罗斯方块
  10. iOS开发API常用英语名词