在C语言中,获取URL中的域名通常需要手动解析字符串,因为标准库中并没有直接提供这样的函数,不过,我们可以使用一些字符串处理函数来帮助我们完成这个任务,以下是一个简单的示例代码,演示了如何从一个URL中提取域名:
#include <stdio.h> #include <string.h> #include <stdlib.h> // 函数声明 char* extract_domain(const char* url); int main() { const char* url = "https://www.example.com/path/to/resource?query=123"; char* domain = extract_domain(url); if (domain) { printf("Domain: %s ", domain); free(domain); // 释放动态分配的内存 } else { printf("Failed to extract domain. "); } return 0; } // 从URL中提取域名的函数实现 char* extract_domain(const char* url) { // 检查URL是否以"http://"或"https://"开头 const char* scheme_end = strstr(url, "://"); if (!scheme_end) { return NULL; // 没有找到协议分隔符 } scheme_end += 3; // 跳过"://" // 查找域名的开始位置(跳过可能存在的"www.") const char* domain_start = scheme_end; if (strncmp(domain_start, "www.", 4) == 0) { domain_start += 4; } // 查找域名的结束位置(即第一个'/'或'?'的位置) const char* domain_end = strpbrk(domain_start, "/?#"); if (!domain_end) { domain_end = url + strlen(url); // 如果没有找到,则认为域名直到URL末尾 } // 计算域名的长度并分配内存 size_t domain_length = domain_end domain_start; char* domain = (char*)malloc(domain_length + 1); if (!domain) { return NULL; // 内存分配失败 } // 复制域名到新分配的内存中 strncpy(domain, domain_start, domain_length); domain[domain_length] = '