C语言从字符串校验IP合法性
首先拷贝字符串,然后使用strtok函数按"."进行分割
把分割完成的字符使用atoi函数转为整数,然后判断数字大小是否在0-255区间内
由于IP首段不能为0,所以排除首段为0的数据
最后验证分割后的段数是否为4段
// 检查ip合法性
int check_ip_set(const char *ip)
{
if (ip == NULL)
{
return -1;
}
int seg_count = 0; // IP地址的段数
int seg_value = 0; // 当前段的数值
char ip_copy[16];
strcpy(ip_copy, ip);
char *token = strtok(ip_copy, ".");
while (token != NULL)
{
seg_count++;
seg_value = atoi(token);
if (seg_value < 0 || seg_value > 255)
{
return -1;
}
if (seg_value != 0 && token[0] == '0')
{
return -1;
}
token = strtok(NULL, ".");
}
if (seg_count != 4)
{
return -1;
}
return 0;
}