/** * 验证IP地址 * @param IP string字符串 一个IP地址字符串 * @return string字符串 */ char* ifIPv4(char* Ip); char* ifIPv6(char* Ip); char* solve(char* IP ) { int Temp = 0; while (IP[Temp] != '.' && IP[Temp] != ':') Temp++; if (IP[Temp] == '.') return ifIPv4(IP); else if (IP[Temp] == ':') return ifIPv6(IP); return "Error"; } char* ifIPv4(char* Ip) { int Index = 0; int Val; int CountforDot = 0; //'.'的个数, '\0'也看作为一个'.' while (CountforDot < 4) { if (Ip[Index] == '0' && Ip[Index + 1] != '.' && Ip[Index + 1] != '\0') return "Neither"; if(Ip[Index]=='.'||Ip[Index]=='\0') return "Neither"; Val = 0; while (Ip[Index] != '.' && Ip[Index] != '\0') { Val = Val * 10 + Ip[Index] - '0'; Index++; } CountforDot++; if (Val > 255) return "Neither"; Index++; } if(Ip[Index-1]=='\0') return "IPv4";\ else return "Neither"; } char* ifIPv6(char* Ip) { int Index = 0; int Len; int CountforDot = 0; //':'的个数, '\0'也看作为一个':' while (CountforDot < 8) { if(Ip[Index]==':'||Ip[Index]=='\0') return "Neither"; Len = 0; while (Ip[Index] != ':' && Ip[Index] != '\0') { if(('0'<=Ip[Index]&&Ip[Index]<='9') || ('a'<=Ip[Index]&&Ip[Index]<='f') || ('A'<=Ip[Index]&&Ip[Index]<='F') ){ Len++; Index++; } else return "Neither"; } CountforDot++; if (Len > 4) return "Neither"; Index++; } if(Ip[Index-1]=='\0') return "IPv6";\ else return "Neither"; }