参考文章链接:http://blog.csdn.net/life_binary/article/details/81366010
网上搜索了比较多的方法去验证 IPv4 地址字符串,发现都有一点点问题,这里修改一部分内容,留作记录,方法如下:
int isIPv4(const char *str) {
// ipv4 地址长度 7(0.0.0.0) 15(255.255.255.255)
if (strlen(str) < 7 || strlen(str) > 15) return 0;
char* ptr;
int count = 0;
char p[16];
for (int i = 0; i < strlen(str); i++) {
p[i] = str[i];
if (str[i] == '.') {
count++;
}
}
if(count != 3) return 0;
count = 0;
ptr = strtok(p, ".");
while(ptr != NULL)
{
count++;
if(ptr[0] == '0' && isdigit(ptr[0])) return 0;
int a = atoi(ptr);
if(count == 1 && a == 0) return 0;
if(a<0 || a>255) return 0;
ptr = strtok(NULL,".");
}
if(count == 4) return 1;
else return 0;
}
网友评论