输入任意一个字符串,判断是否为合法IP
1 bool IsIPAddress(const char * str){ 2 //先判断形式是否合法, 3 4 //检查是否只包含点和数字 5 for(int i = 0; str[i] != ‘\0‘; i++){ 6 if(!IsDigit(str[i]) && str[i] != ‘.‘) 7 return false; 8 } 9 10 //检查是否形如X.X.X.X 11 int count = 0; 12 for(int i = 0; str[i+1] != ‘\0‘; i++){ 13 if(IsDigit(str[i]) && str[i+1] == ‘.‘ ) 14 count++; 15 } 16 if(count != 3) 17 return false; 18 19 //检查区间是否合法 20 int temp = 0; 21 int j = 0; 22 for(int i = 0; str[i] != ‘\0‘; i++){ 23 if(str[i] != ‘.‘){ 24 temp = (temp * 10 * j + int(str[i] - ‘0‘)); 25 j++; 26 } 27 else{ 28 if(temp <= 255){ 29 temp = 0; 30 j = 0; 31 } 32 else 33 return false; 34 } 35 } 36 37 //最后一个也要判断 38 if(temp > 255) 39 return false; 40 41 //通过所有测试,返回正确 42 return true; 43 }
时间: 2024-12-15 08:43:03