我有这个代码:
#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”作为最终结果。
如何让它正确检测它是子域还是域?也许如果我包括一个已知 tlds 的列表?