判断一个字符段是顶级域名还是多级域名

Hayden_yang 2010-11-14 02:13:27
小弟请教个小问题: 如何判断一个域名是顶级域名还是多级域名

如: *.xc239.cn /这样的属于顶级域名
*.mail.xc239.cn /这样的给属于多级域名


...全文
128 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hayden_yang 2010-11-15
  • 打赏
  • 举报
回复
1楼的没有考虑到还有可能 是
xc239.com.cn / 这样的域名也属于 顶级域名
dooX8086 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 keaihuilang 的回复:]

1楼的没有考虑到还有可能 是
xc239.com.cn / 这样的域名也属于 顶级域名
[/Quote]

xc239.com.cn xxx.ccav.com.cn 还是 xxx.ccav.net 等..
char *p = strchr(strchr(str, '.') + 1, '.'); //查找两次 . 号, 后 p 都是指向域名符的点

xxx.3721.ccav.net 还是 xxx.114.ccav.com.cn
char *p = strchr(strchr(str, '.') + 1, '.'); //非顶级域名查找两次 . 号, 后 p 是到达不了域名符的点的

所以 p 要>= n (域名符的起始位)
if (p >= n)
{
//顶级
}
else
{
//多级
}


ccav.gov 也有这种情况 ,find 两次 . 就为 null 了。
ccav.gov/xxx.php/ 等情况..... 你还需要find / 等...
都是为了
char *n = strstr(p, ".cn"); // .org .com .xxx
找出 域名符的起始位 n ,那么 p >= n 就成立
。。
。。

//我只是说下 查找 。(特征符) 的方法是可行的
//并不是我没有考虑, 而是楼主一看到 find 点 这么笨的方法心理有抗拒,无视这种基本操作
//我也说了,你可以考虑 sscanf 与 正则
iealien 2010-11-15
  • 打赏
  • 举报
回复
*.mail.xc239.cn 也可以是顶及域名啊 这个要看具体情况的
luciferisnotsatan 2010-11-14
  • 打赏
  • 举报
回复
先整理出两者之间的差异。然后做为判断规则,写成代码
dooX8086 2010-11-14
  • 打赏
  • 举报
回复
笨点的方法
char *p = strchr(strchr(str, '.') + 1, '.');  //查找两次 . 号 
char *n = strstr(p, ".cn"); // .org .com .xxx

if (p >= n)
{
//顶级
}
else
{
//多级
}


要么就 sscanf / 正则

69,381

社区成员

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

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