200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 判断IP地址是否合法(C语言)

判断IP地址是否合法(C语言)

时间:2019-03-24 11:18:13

相关推荐

判断IP地址是否合法(C语言)

C语言判断IP地址是否合法

IPv4地址是由四个0~255的整型数,中间以’.'隔开的字符串,最大为长度为15。

通过以上特征来鉴别是否是IPv4地址。整个字符串只能是由0-9的数字和’.‘组成,不能有其它字符。资格整数间嵌入了三个’.‘,每个整数的范围都在0~255,在整数0出现以后,后面只能是’.',不能是数字了。如192.168.01.1。

#include <stdio.h>#include <string.h>#define MAX_SIZE_IP_NUM12#define MAX_SIZE_IP_LEN 17int is_ipv4_addr(char *ip);int main(){char str[MAX_SIZE_IP_NUM][MAX_SIZE_IP_LEN] = {"192.168.0.1","192.168. 1.1","256.168.0.1","19a.168.2.3","192.168.2.1 ","192.168.2.","1921.168.1.1","192.1 2.3.","192.1..1.4","192.1.1.1.","192.168.01.0","192.192.192.1921"};for (int i = 0; i < MAX_SIZE_IP_NUM; i++) {printf("#%s# ", str[i]);if (is_ipv4_addr(str[i]) == 0) {printf("true\r\n");} else {printf("false\r\n");}}return 0;}int is_ipv4_addr(char *ip){if (ip == NULL || ip[0] == '0' || ip[0] == '\0') {return -1;}for (int i = 0, count = 0; i < strlen(ip); i++) {if ((ip[i] != '.') && (ip[i] < '0' || ip[i] > '9')) {return -1;}if (ip[i] == '.') {count++;if (count > 3) {return -1;}}}int ip_num[4] = {-1, -1, -1, -1};char ip_s[4][4];memset(ip_s, 0, sizeof(char[4]) * 4);sscanf(ip, "%[^.].%[^.].%[^.].%[^ ]", ip_s[0], ip_s[1], ip_s[2], ip_s[3]);sscanf(ip_s[0], "%d", &ip_num[0]);sscanf(ip_s[1], "%d", &ip_num[1]);sscanf(ip_s[2], "%d", &ip_num[2]);sscanf(ip_s[3], "%d", &ip_num[3]);for (int i = 0; i < 4; i++) {if (strlen(ip_s[i]) == 0 || (ip_s[i][0] == '0' && ip_s[i][1] != '\0') || ip_num[i] < 0 || ip_num[i] > 255) {return -1;}}return 0;}

测试结果如下:

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