作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个代码:
#include <stdio.h>
#include <string.h>
int main()
{
char buf[255];
char buf2[255];
char myhost[255] = "subdomain.domain.com";
char *pch;
int token_counter = 0;
memset(buf, 0, 255);
memset(buf2, 0, 255);
pch = strtok(myhost, ".");
while (pch != NULL)
{
pch = strtok(NULL, ".");
if (pch == NULL)
{
memset(buf, 0, 255);
strncpy(buf, buf2, strlen(buf2) - 1);
break;
}
token_counter++;
strcat(buf2, pch);
strcat(buf2, ".");
}
printf("Domain: %s\n", buf);
return 0;
}
如果 myhost 被定义为 subdomain.domain.com,则工作正常,但如果是 domain.com,则最终结果显示为“com”。
如何让它正确检测它是子域还是域?也许我可以包含已知顶级域名的列表?
最佳答案
strtok
太过分了,而 strcat
则很浪费。如果您只想打印第 n 个 .
之后的所有内容,请使用 strchr
或仅检查字符串以查找第 n 个 .
。如果需要,请从字符串末尾开始计数。
让我解释一下为什么 strcat
在这里浪费时间。考虑:
const char *name = "foo.bar.baz.qux.net";
printf( "%s\n", name + 8 );
如果您想打印“baz.qux.net”,则无需将该字符串复制到新的缓冲区中,因为您已经有一个指向所需字符串的第一个字符的指针。使用你所拥有的。您需要做的就是在字符串中找到指向所需 .
的指针,然后执行 printf( "%s\n", dot + 1 )
或 puts(点+1)
。 (puts
在这里更好,但您可能更熟悉 printf
)
关于c - 域名解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14293487/
我有这个代码: #include #include int main() { char buf[255];
今天给大家梳理一篇关于网址、URL、IP地址、域名、DNS、域名解析的白话长文,并以简单的提问-解答形式让读者更加深刻理解网址、URL、IP地址、域名、DNS、域名解析,希望有助于读者的学习,面
我是一名优秀的程序员,十分优秀!