int GetDomain(char *url,char *domain)
{
  char tmp[MAX_PATH]={0};
  if(memicmp("http://",url,7)==0)
  {
    strcpy(tmp,&url[7]);
   }else
  {
   return 0;
  }
 strcpy(domain,strtok(tmp,"/"));
   return strlen(domain);
}
为什么这个小函数连续调用N次后就会崩溃?怎样修改才会没有问题?这是网上找到的,返回字符串中的域名函数,谢谢

解决方案 »

  1.   

    strcpy(domain,strtok(tmp,"/")); 
    如果domain输入不为空的时候,一直增加domain[0] = 0;
    strcpy(domain,strtok(tmp,"/"));
      

  2.   


    怎么调用的?有没有分配内存给 domain调用函数后又是怎么使用domain的
      

  3.   

    HRESULT ParseURL(
        LPCTSTR pszUrl,
        PARSEDURL *ppu
    );用现成的函数就行了
      

  4.   

    strtok 函数不能在多线程中使用(因为内部使用了静态局部变量来保存信息),
    如果你在多线程环境下使用这个GetDomain,基本下会发生问题
      

  5.   

    其实我是有一个 char *str; 这个 str 是一个不确定长度的字符串,例如 http://22.33.com/dd/ee?l..... 这样的网址字符串。我现在想要取得这个字符串中的域名 22.33.com 请问大家怎么写?谢谢
      

  6.   


    没问题啊,如下,调用多少遍也没问题
      char url[] = "http://22.33.com/ur/dk/...";
    char domain[20];
    GetDomain(url,domain);
      

  7.   

    CString Domain(LPCTSTR URL)
    {
    CString url=URL;
    if(url.Find("http://",0)==0)
    {
    url.Delete(0,sizeof("http://"));
    int index=url.Find('/',0);
    if(index>0)
    url=url.Left(index);
    return url;
    }
    return "";
    }