我有一个函数(在C中)传递一个URL。此功能仅适用于URL参数的形式为www.example.com
,而不是http://www.example.com
。如何从C中的char数组中删除前导“http://”?
我想修改这个函数,这样当以http://www.example.com
的形式传递一个URL时,它会剥去前导http://
(如果存在),以便它能够正常运行。
我该如何在C中做到这一点?
这里是有问题的功能(让我知道如果有一个更好的方式来做到这一点):
char* get_ip (char* url)
{
struct hostent* h;
if ((h = gethostbyname(url)) == NULL)
return NULL;
return inet_ntoa(*((struct in_addr*)h->h_addr));
}
为了得到它工作其他的方案如ftp也可以简单地在'://'和下一个'/'之间提取(如果存在的话)。如果主机部分包含“@”,则主机名将从该字符开始。一个特殊的情况是file:/// xyz,它会导致一个空字符串并返回'localhost'。 –