怎么比较两个IP大小,CString 类型或字符数组类型

wangjiwei2010 2007-11-15 11:10:07
怎么比较两个IP大小,CString 类型或字符数组类型
如:
"192.168.10.10"
"192.168.10.2"
或者
"192.168.10.10"
"2.168.10.10"

...全文
508 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjiwei2010 2007-11-15
  • 打赏
  • 举报
回复
解决了,
vc6下用函数 sscanf
vc8下用函数 sscanf_s
谢了,结帖,接分!
ppfly2008 2007-11-15
  • 打赏
  • 举报
回复
另外一中方法:atoi()

CString ip_1 = "192.168.10.2";
CString ip_2 = "192.168.10.10";

CString m_ip1 = ip_1;
CString m_ip2 = ip_2;
for(int i = 0; i < 4; i++)
{
char *ip1 = m_ip1.GetBuffer(0);
int result1 = atoi(ip1);
char *ip2 = m_ip2.GetBuffer(0);
int result2 = atoi(ip2);
if(result1 > result2)
{
AfxMessageBox(ip_1); // ip_1大
return 1;
}
if(result1 < result2)
{
AfxMessageBox(ip_2); // ip_2大
return 1;
}
m_ip1 = m_ip1.Right(m_ip1.GetLength() - m_ip1.Find('.') - 1);
m_ip2 = m_ip2.Right(m_ip2.GetLength() - m_ip2.Find('.') - 1);
}
wangjiwei2010 2007-11-15
  • 打赏
  • 举报
回复
to: NKLoveRene
能具体说说吗
ppfly2008 2007-11-15
  • 打赏
  • 举报
回复
to:wangjiwei2010

那就不知道了~我用的6。。呵呵~
NKLoveRene 2007-11-15
  • 打赏
  • 举报
回复
使用strtok,把.当作token,然后解析出来存到数组里、
再比较不行么
wangjiwei2010 2007-11-15
  • 打赏
  • 举报
回复
to: ppfly2008
我试了,在vc6下可以用,但是在vc8下不能用sscanf啊,有在vc8下对应的函数吗?
飞哥 2007-11-15
  • 打赏
  • 举报
回复
和着就是取出四个数啊

然后从头开始比较这四个数啊

sscanf(str,"%d:%d:%d:%d", &a,&b,&c,&d);
ppfly2008 2007-11-15
  • 打赏
  • 举报
回复
...我的CONSOLE APP support MFC可以直接用。。

#include <stdio.h> ??加上

wangjiwei2010 2007-11-15
  • 打赏
  • 举报
回复
就是把它们以小数点分隔的字符转换成数字比较大小
比如
"192.168.10.10 " 大于 "192.168.10.2 "
或者
"192.168.10.10 " 大于 "2.168.10.10 "

To: ppfly2008

sscanf(ip_1,"%d.%d.%d.%d", &num_1[0],&num_1[1],&num_1[2],&num_1[3]);
此函数sscanf()在MFC下不能用啊,在MFC下对应的函数是哪个啊? 谢谢!

ppfly2008 2007-11-15
  • 打赏
  • 举报
回复

CString ip_1 = "192.168.10.2";
CString ip_2 = "192.168.10.10";

int num_1[4], num_2[4];
sscanf(ip_1,"%d.%d.%d.%d", &num_1[0],&num_1[1],&num_1[2],&num_1[3]);
sscanf(ip_2,"%d.%d.%d.%d", &num_2[0],&num_2[1],&num_2[2],&num_2[3]);

for(int i = 0; i < 4; i++)
{
if(num_1[i] > num_2[i])
{
AfxMessageBox(ip_1); // ip_1大
return 1;
}
if(num_1[i] < num_2[i])
{
AfxMessageBox(ip_2); // ip_2大
return 1;
}
}
healer_kx 2007-11-15
  • 打赏
  • 举报
回复
是啊IP的大小比较规则是什么啊? 要不转成long型的再比。。。 。。。
ouyh12345 2007-11-15
  • 打赏
  • 举报
回复
大小的标准是什么?

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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