/*从字符串中获取尽可能多的ipv4地址*/
void getIP( char *ip ) {
if ( (nullptr==ip)||(strlen(ip)<4)||(strlen(ip)>12) ) {
return;
}
char *s = ip;
long long sum = 0;
int i = 0;
char *dest = new char[strlen(ip) + 4];
char *temp = dest;
vector<char*> v;
for (int i1 = 1; i1 <= 3; ++i1) {
i = 0;
sum = 0;
temp = dest + 0;
s = ip+0;
while ( (i<i1)&&(*s !='\0') ) {
sum = sum * 10 + (*s - '0');
++i;
*temp++ = *s++;
}
if (sum > 255) {
break;
}
else {
*temp++ = '.';
for (int i2 = 1; i2 <= 3; ++i2) {
i = 0;
sum = 0;
temp = dest + i1+1;
s = ip + i1;
while ((i<i2) && (*s != '\0')) {
sum = sum * 10 + (*s - '0');
++i;
*temp++ = *s++;
}
if (sum > 255) {
break;
}
else {
*temp++ = '.';
for (int i3 = 1; i3 <= 3; ++i3) {
i = 0;
sum = 0;
temp = dest + i2+i1+2;
s = ip + i2+i1;
while ((i<i3) && (*s != '\0')) {
sum = sum * 10 + (*s - '0');
++i;
*temp++ = *s++;
}
if (sum > 255) {
break;
}
else {
*temp++ = '.';
sum = 0;
while ( *s != '\0' ) {
sum = sum * 10 + ( *s-'0');
*temp++ = *s++;
}
*temp = '\0';
if ( sum>255 ) {
continue;
}
else {
char *chen = new char[strlen(ip) + 4];
strcpy( chen , dest );
v.push_back(chen);
}
}
}
}
}
}
}
for (auto b = v.begin(); b != v.end();++b ) {
cout << *b << endl;
}
}
07_
最新推荐文章于 2022-01-09 19:40:03 发布