100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【面试题】判断合法的IP地址(IPV4)

【面试题】判断合法的IP地址(IPV4)

时间:2022-09-06 13:55:53

相关推荐

【面试题】判断合法的IP地址(IPV4)

分析:首先我们要知道IP地址(IPV4)的条件:

(除去特殊的主机和广播地址)

1、IP地址只有三个’ . ',如果不是三个点,就不是IP地址

2、例如:A.B.C.D

A不能为0,且每一位都不能大于255

3、所以要用一个函数单独对 **’ . '**进行判断

4、特别说明一下isdigit函数,主要用于检查其参数是否为十进制数字字符,C语言中要加上头文件<ctype.h>

代码如下:

//如何判断合法的IP地址, 尽可能考虑各种情况(面试题)//判断IPV4的地址是否合法的程序#include<stdio.h>#include<ctype.h>static int PointNum(const char* str){int count = 0;if (str == NULL){return 0;}while (*str != '\0'){if (*str == '.'){count++;}str++;}return count;}bool IsIP(char* str){int num = 0;if (str == NULL || str[0] == '0')//IP地址起始不能为0{return false;}if (PointNum(str) != 3)//IP地址只有3个'.'{return false;}while (*str != '\0'){if (isdigit(*str)){num = num * 10 + (*str) - '0';}else if (*str != '.' || num > 255){return false;}else{num = 0;}str++;}if (num > 255)//最后一个数据不在进循环,所以最终处理尾部数据return false;return true;}int main(){char *str[] = {"192.188.1.2", "256.3.4.1", "0.1.2.3", "123.256.3.4", "198.164.23.259" };for (int i = 0; i < sizeof(str) / sizeof(str[0]); i++){if (IsIP(str[i])){printf("%s 是合法的IP\n", str[i]);}else{printf("%s 不是合法的IP\n", str[i]);}}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。