验证给定的字符串IP是否正确

来源:互联网 发布:查拉斯图拉如是说 知乎 编辑:程序博客网 时间:2024/06/06 05:20

由于最近看到了笔试题目中的验证IP,所以手痒就写了下面的代码。没有考虑到优化和ABCD类的条件,过后改进哈~

Version 1.0:


#include<iostream>#include<stdlib.h>using namespace std;int check(const char *p){if(p == NULL)return 0;else {while(*p!='\0'){if(*p>= '0' && *p++ <= '9') continue;else return 0;}}return 1;}int is_IP_address(const char *ip){char *temp = const_cast< char* >(ip);int count = 0;while(*temp!='\0'){if(*temp == '.'){count++;}temp++;}char s1[3],s2[3],s3[3],s4[3];int flag = sscanf(ip,"%[^.].%[^.].%[^.].%[^.]",s1,s2,s3,s4);if(count!=3 || flag!=4) return 0;if(!(check(s1) && check(s2) && check(s3) && check(s4)))return 0;int ip_1,ip_2,ip_3,ip_4;ip_1 = atoi(s1);ip_2 = atoi(s2);ip_3 = atoi(s3);ip_4 = atoi(s4);if( (0<=ip_1 && ip_1<=255) && (0<=ip_2 && ip_2<=255) && (0<=ip_3 && ip_3<=255) && (0<=ip_4 && ip_4<=255) ) return 1;else return 0;}int main(){const char *ip = "192.168.1.1";cout<<is_IP_address(ip);return 0;}




0 0
原创粉丝点击