编写一个C语言函数,要求输入一个url,输出该url是首页、目录页或者其他url
如下形式叫做首页:
militia.info/
www.apcnc.com.cn/
http://www.cyjzs.comwww.greena888.com/
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/
另:如果你会linux,请用linux下的grep命令实现第2题的功能(附加5分)。
解答:(思想,利用设标志位判断)
代码很简洁,我就不讲解了,欢迎讨论最好的方法~~
/*
* FileName: AnalyseUrl.cpp
* Type: C++
* Copyright: (c) 2009 Jingyi Xiao
* Authors: Jingyi Xiao
* Description:
*/
#include iostream
#include cstring
using namespace std;
int AnalyseUrlDo(char urls[][100], int n){
int main_flag = 1, else_flag = 0;
int count_main;
for (int i = 0; i < n; i++){
if (strncmp ("http:", urls[i], 5) == 0) main_flag = 3;
else main_flag = 1;
count_main = 0;
else_flag = 0;
for (int j = 0; urls[i][j] != '/0'; j++){
if (urls[i][j] == '/' && count_main <= main_flag) ++count_main;
else if (urls[i][j] == '?') ++else_flag;
}
if (count_main == main_flag && else_flag == 0)
cout << urls[i] << " : main url" << endl;
else if (else_flag == 0)
cout << urls[i] << " : dir url" << endl;
else
cout << urls[i] << " : else url" << endl;
}
}
int AnalyseUrl (){
char datas[11][100] = {"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/",
"www.buddhismcity.net/utility/mailit.php?l=/activity/details/3135/",
"www.buddhismcity.net/utility/mailit.php?l=/activity/details/2449/" };
AnalyseUrlDo(datas, 11);
return 0;
}
附加问题:至于grep,我还暂时没想到好的方法,有没有哪位仁兄在这里补充一下你的思想???