代码改变世界

百度笔试题-检测url类型

2009-10-12 10:22  Iron  阅读(460)  评论(0编辑  收藏  举报

题目:  编写一个C语言函数,要求输入一个url,输出该url是首页、目录页或者其他url  
     如下形式叫做首页:  
     militia.info/  
     www.apcnc.com.cn/  
     http://www.cyjzs.comwww.greena888.com/  
     www.800cool.net/  
     http://hgh-products.my-age.net/  
     如下形式叫做目录页:  
     thursdaythree.net/greenhouses--gas-global-green-house-warming/  
     http://www.mw.net.tw/user/tgk5ar1r/profile/  
     http://www.szeasy.com/food/yszt/chunjie/  
     www.fuckingjapanese.com/Reality/  
   
     请注意:  
     a) url有可能带http头也有可能不带  
     b)动态url(即含有"?"的url)的一律不算目录页,如:  
     www.buddhismcity.net/utility/mailit.php?l=/activity/details/3135/  
     www.buddhismcity.net/utility/mailit.php?l=/activity/details/2449/  

解题思路:

1.先将有http://的字符串滤掉,判断剩下的字符串

2.扫描剩下的字符串,记录‘/’的数目,若有‘?’出现,则直接返回结果:其他

3.有一个‘/’的即为域名(其实域名也可不加/,只不过这里是题目的要求),如果数目多于一个,则是一个网站目录

//程序

#include <stdio.h>
#include <string.h>
int CheckUrl(const char * url)
{
 char temp[100];
 char strHead[8];
 memmove(strHead,url,7);
 strHead[7] = '\0';
 strcpy(temp,url);
 char * s = temp;
 if (strcmp("http://",strHead)==0)
 {
  s = temp+7;
 }
 int segCount = 0;
 for (;s<temp+strlen(temp);)
 {
  if (*s == '?')
  {
   return 3;//其他
  }
  if (*s == '/')
  {
   segCount++;
  }
  s++;
 }
 if (segCount>1)
 {
  return 2;//目录
 }
 return 1;//域名
}
int main()
{
 char str[100];
 while(scanf("%s",str))
 {
  printf("%s:%d\n",str,CheckUrl(str));
 }
}