判断IP合法性函数

wxdcxp 2010-08-09 03:10:59

//判断IP地址是否合法
BOOL pa_chkip(char *ip)
{
int i, count = 0;
const char *s = ".";
char TempIP[20]={0};
int IPAddr[4] = {0};

strcpy(TempIP, ip);
for(i = 0; i < sizeof(TempIP); i++)
{
if(TempIP[i] == '.')
{
count++;

}
}

if(count != 3)
{
return FALSE;
}


IPAddr[0] = atoi(strtok(TempIP, s));
IPAddr[1] = atoi(strtok(NULL, s));
IPAddr[2] = atoi(strtok(NULL, s));
IPAddr[3] = atoi(strtok(NULL, s));


if ((IPAddr[0] >= 0&&IPAddr[0] <= 255)&&(IPAddr[1] >= 0&&IPAddr[1] <= 255)&&(IPAddr[2] >= 0&&IPAddr[2] <= 255)&&(IPAddr[3] >= 0&&IPAddr[3] <= 255))
{
return TRUE;
}
else
{
return FALSE;

}

}


上面函数是判断IP合法性函数,目前存在一个问题:
当输入的IP为192.168.1.或者192...就无法判断IP是否合法。大家是否有好的解决方法?或者判断IP合法的函数,贡献下
...全文
718 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
abonege 2010-09-21
  • 打赏
  • 举报
回复
2楼的不能判断 "192.168" 这样的不合法,得到仍然是ip
honemay 2010-08-13
  • 打赏
  • 举报
回复
定2楼!!
rightrat 2010-08-13
  • 打赏
  • 举报
回复
正则表达式
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
wxdcxp 2010-08-12
  • 打赏
  • 举报
回复
系统不支持该函数,有其他方法吗
zrebecca 2010-08-12
  • 打赏
  • 举报
回复
inet_addr函数就可以了,别自己写,这种一般都有标准的。
黑泡泡选手 2010-08-09
  • 打赏
  • 举报
回复
2楼的方法不错!
leonliu7558168 2010-08-09
  • 打赏
  • 举报
回复
楼主这个程序我写过,多写几个if就OK了!嘿嘿!好好把可能出现的非法情况想想!
顺便给我点分吧!我太可怜了!
qazwhl845174869 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ayw215 的回复:]
引用 2 楼 wjb_yd 的回复:

楼主不就是想判断一个字符串ip是否合法吗?
C/C++ code

if (INADDR_NONE == inet_addr(AsciiBuff))
//不合法;
else
//合法;
这个简单
[/Quote]
学习一下
ayw215 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wjb_yd 的回复:]

楼主不就是想判断一个字符串ip是否合法吗?
C/C++ code

if (INADDR_NONE == inet_addr(AsciiBuff))
//不合法;
else
//合法;
[/Quote]这个简单
wjb_yd 2010-08-09
  • 打赏
  • 举报
回复
楼主不就是想判断一个字符串ip是否合法吗?

if (INADDR_NONE == inet_addr(AsciiBuff))
//不合法;
else
//合法;

DotCpp 2010-08-09
  • 打赏
  • 举报
回复

char* p = TempIP;
while(p)
{
if(*p =='*')
if((p+1) != NULL && *(p+1)!= '*')
count++;
p++;
}

if(count != 3)
{
return FALSE;
}



69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧