# re: 判断一个IP地址是不是合法 回复 更多评论
2010-10-20 22:31 by
我把改成下面的代码,你看对不对,如果有误,请告诉我,谢谢,一起进步
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
bool IsIP(char *ip)
{
char *temp = ip;
int nlength =strlen(temp);
if (nlength<7 || nlength>15)
return false;
int nCount = 0;
int nFlag = 0;
while(*temp != '\0')
{
if(*temp == '.')
nCount++;
temp++;
}
char s1[5],s2[5],s3[5],s4[5]; /*存放IP段*/
nFlag = sscanf(ip,"%[^.].%[^.].%[^.].%[^.]",s1,s2,s3,s4);
if(nCount != 3 || nFlag != 4)
return false;
int ip_1,ip_2,ip_3,ip_4;
ip_1 = atoi(s1);
ip_2 = atoi(s2);
ip_3 = atoi(s3);
ip_4 = atoi(s4);
int len_s1,len_s2,len_s3;
len_s1=strlen(s1);
len_s2=strlen(s2);
len_s3=strlen(s3);
if( (0 <= ip_1 && ip_1 <= 255) && (0 <= ip_2 && ip_2 <= 255) && (0 <= ip_3 && ip_3 <= 255) && (0 <= ip_4 && ip_4 <= 255))
{
if (!((s1[0]='0' && len_s1>1) || (s2[0]='0' && len_s2>1) || (s3[0]='0' && len_s3>1))) //确保每段ip不是以0开头
return true;
}
return false;
}
# re: 判断一个IP地址是不是合法 回复 更多评论
2010-10-20 22:42 by
对不起,你的那个验证是否"IP应为合法数字"
忘加了
# re: 判断一个IP地址是不是合法 回复 更多评论
2010-10-22 10:27 by
你好,输入P没有01.01.01.01这样输入的吧@huangdi915103@gmai.com
# re: 判断一个IP地址是不是合法 回复 更多评论
2013-11-26 11:04 by
注意if里面的是==而不是=
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
bool IsIP(char *ip)
{
char *temp = ip;
int nlength =strlen(temp);
if (nlength<7 || nlength>15)
return false;
int nCount = 0;
int nFlag = 0;
while(*temp != '\0')
{
if(*temp == '.')
nCount++;
temp++;
}
char s1[5],s2[5],s3[5],s4[5]; /*存放IP段*/
nFlag = sscanf(ip,"%[^.].%[^.].%[^.].%[^.]",s1,s2,s3,s4);
if(nCount != 3 || nFlag != 4)
return false;
int ip_1,ip_2,ip_3,ip_4;
ip_1 = atoi(s1);
ip_2 = atoi(s2);
ip_3 = atoi(s3);
ip_4 = atoi(s4);
int len_s1,len_s2,len_s3;
len_s1=strlen(s1);
len_s2=strlen(s2);
len_s3=strlen(s3);
if( (0 <= ip_1 && ip_1 <= 255) && (0 <= ip_2 && ip_2 <= 255) && (0 <= ip_3 && ip_3 <= 255) && (0 <= ip_4 && ip_4 <= 255))
{
if (!((s1[0]=='0' && len_s1>1) || (s2[0]=='0' && len_s2>1) || (s3[0]=='0' && len_s3>1))) //确保每段ip不是以0开头
return true;
}
return false;
}