算法题:判断字符串是否为 ipv4 地址

#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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

未捕获typeerror: $形象。cropper不是函数_没有学不会的python--细说自定义函数的细节...

没有学不会的python函数是什么&#xff1f;老调常谈&#xff0c;还是那老一套&#xff0c;学习一个东西前&#xff0c;先搞懂是什么&#xff0c;再来学习怎么用。函数函数&#xff0c;如果你是刚经历过高考肯定很熟悉&#xff0c;数学中就经常出现这个名词&#xff0c;比如什么…

centos 7.0上RabbitMQ 3.5.6版本多实例启动操作讲解

在很多场景中&#xff0c;我们可能需要单机上启动多个rabbitmq实例&#xff0c;启动多个实例其实就是启用不同的端口。rabbitmq的默认端口为5672,15672,25672&#xff0c;以下经过实际操作绝对原创&#xff0c;亲测有效&#xff0c;耗费了老半天时间&#xff0c;怎么没有白费啊…

win2008r2 AD用户账户的批量导入方法

win2008r2 AD用户账户的批量导入方法 http://www.jb51.net/article/38423.htm 转载于:https://www.cnblogs.com/cl1024cl/p/6205798.html

centos ping不通百度 ping不通外网

ping不通百度 ping不通外网 这个问题会导致yum源安装软件失败 原因是 /etc/sysconfig/network-scripts/ifcfg-ens33 文件没有配置好 注意检查配置项 1配置本机ip地址 IPADDR 2设置网关 GATEWAY 3子网掩码 NETMASK 4MAC地址 HWADDR 5DNS服务器 DNS1 文件内容实例 TY…

usg6000v 无法ping通_柯美复印机网络打印无响应?无法打印、扫描?原来这里出了问题...

机器在安装后&#xff0c;网络连接正常&#xff0c;使用ping命令可以通&#xff0c;但无法使用打印&#xff0c;扫描等网络功能Ping命令使用方法&#xff1a;1、“运行”输入CMD&#xff0c;调出Dos窗口2、输入命令&#xff1a;Ping 设备IP地址&#xff0c;按回车即可可以拼得通…

【NOIP考前模拟赛】纯数学方法推导——旅行者问题

一、写在前面 这题似乎是一道原创题目&#xff08;不是博主原创&#xff09;&#xff0c;所以并不能在任何OJ上评测&#xff0c;博主在网盘上上传了数据&#xff08;网盘地址&#xff1a;http://pan.baidu.com/s/1mibdMXi&#xff09;&#xff0c;诸位看官需者自取。另外博主使…

ubuntu 配置静态ip

先获取root权限: sudo su ubuntu 静态ip配置文件在 /etc/netplan/01-network-manager-all.yaml 文件初始内容可能是 # Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager 没有网卡配置信息 需要加入网卡配置项…

python中none是什么类型_如何在Python中”测试”None类型?

我有一个方法&#xff0c;它有时返回一个非类型的值。那么我怎样才能质疑一个非类型的变量呢&#xff1f;例如&#xff0c;我需要使用if方法if not new:new #我知道这是错误的方式&#xff0c;我希望你理解我的意思。我想这是在这里回答的&#xff0c;显然是在以前的某个地方。…

C++ 一个文件调用另一个文件的函数模板

笔记 实验得出 函数模板只能被本文件调用&#xff0c;这一点与inline函数和静态函数相似 &#xff0c;如果函数模板可能被其他文件调用 可以把函数模板定义在头文件中。与inline函数相同&#xff0c;在不同文件可以定义同名同模板列表同函数参数的函数模板&#xff0c;甚至函数…

GO 语言笔记

使用 Visual Studio Code 开发环境配置请看 http://studygolang.com/articles/8851 为什么要使用Go 语言&#xff1f;Go 语言的优势在哪里&#xff1f; - Go 语言- 知乎 请看 https://www.zhihu.com/question/21409296 基础入门看官网 https://golang.org/ & 无闻 http…

python os读取文件名_Python3基础 os.path.splitext 处理文件名,得到文件名+扩展名

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""Author : 行初心Date : 18-10-2Blog : www.cnblogs.com/xingchuxinGitee : gitee.com/zhichengjiu"""import osdef main():file_name_…

自己写的几个常用到的函数

<?php /* * 生成指定数量和指定字符串生成随机字符串 * param int $len 获取随机字符的个数 * param string $range 指定在该字符串中获取随机字符 */ function randomString($len,$range){ if($range ){ $str 0123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNP…

我有话说

欢迎留言&#xff01;

qtreewidget 获取根节点_详解去中心化信任根dRoT技术

近日&#xff0c;第21届国际信息与通信安全会议(ICICS 2019)在北京召开。ICICS是国际公认的网络与信息安全类顶级学术会议&#xff0c;汇聚了国内外诸多信息安全专家与学术泰斗。本届ICICS 2019会议围绕信息与网络安全技术的各个方面展开深入研讨&#xff0c;议题涵盖了区块链、…

反向代理服务器的工作原理

http://blog.csdn.net/keyeagle/article/details/6723408转载于:https://www.cnblogs.com/figofifa/p/5604407.html

Linux命令:bash脚本编程--脚本

练习&#xff1a;写一个脚本adminuser33.sh&#xff0c;其用法格式为&#xff1a;adminuser33.sh --add -del -h|--help -v|--verbose其中&#xff0c;-h选项只能单独使用&#xff0c;用于显示帮助信息&#xff1b;--add选项时&#xff0c;新增用户&#xff1b;如果同时使用了-…

python实参_python的形参和实参

Python中函数参数的传递是通过“赋值”来传递的。但这条规则只回答了函数参数传递的“战略问题”&#xff0c;并没有回答“战术问题”&#xff0c;也就说没有回答怎么赋值的问题。函数参数的使用可以分为两个方面&#xff0c;一是函数参数如何定义&#xff0c;二是函数在调用时…

校招碎碎念

前两天拿了去哪儿(Qunar)的offer&#xff0c;不打算接着找了&#xff0c;心累&#xff0c;结束我的校招生涯吧&#xff0c;写写这段时间的经历。 本科生一只&#xff0c;普通一本&#xff0c;非211/985学校&#xff0c;出了省就没人认那种&#xff0c;计算机专业&#xff0c;目…

pyQuery

pyquery – PyQuery complete API 选择器基本支持jQuery用法 class pyquery.pyquery.PyQuery(*args, **kwargs)The main class class FnHook for defining custom function (like the jQuery.fn): >>> fn lambda: this.map(lambda i, el: PyQuery(this).outerHtml())…

python配置pip_Python pip源配置

pipy国内镜像目前有&#xff1a;Win7下配置pip源&#xff1a;1、在win7用户目录下创建pip目录&#xff0c;以用户user为例&#xff1a;C:\Users\user\pip2、在pip目录下新建pip.ini文件&#xff1a;C:\Users\user\pip\pip.ini3、配置文件内容&#xff1a;以下是一个简单的配置示…