用c语言判断网址怎么做呢?

如题所述

/*
问题地址:http://zhidao.baidu.com/question/317437658.html

详解:
标准的网址(URL)格式是这样的:
http://user:pass@myserver:port/myapp1/myapp2/index.html?key1=value2&key2=value2#anchor
其中:
[1] http 是协议类型,同样的还有 ftp 等。【可省略,一般浏览器默认都是 http】
[2] user 是用户名,pass 是密码。【可省略】
[3] myserver 可以是服务器的 ip 或者域名,
如百度的 ip = 220.181.112.143 , 域名是:www.baidu.com
【这个不能省略】
[4] port 是端口。【可省略,一般默认都是 80】
[5] myapp1,myapp2 是应用程序目录。【可省略】
index.html 是当前页面【可省略,默认是 index.html,default.html 等】
[6] key1,value1,key2,value2 是传递给网站的参数,【可省略】
[7] anchor 是网页内的锚点

合法的网址举例:
www.baidu.com
http://__anglfish:123@www.baidu.com:80/
http://zhidao.baidu.com/question/311110938.html?an=0&si=1

判断网址算法:
最简单的当然是正则表达式了。
我们看到标准网址(URL)的 7 个部分,有 6 个分割符号,分别是:
://
@
:
/
?
#
在浏览器里面,只有第 3 部分是必须填写的,也是我们日常写的最多的。

用到的资源文件:
头文件 deelx.h,可以到:http://www.regexlab.com/zh/deelx/下载
下载后放到和源程序同一个目录下即可。
*/

#include <stdio.h>
#include "deelx.h"

int main(int argc, char * argv[])
{
char text[1000] = "http://user:pass@myserver.com:800/myapp1/myapp2/index.html?key1=value1&key2=value2#anchor";
// 判断合法网址的正则表达式
static CRegexpT <char> regexp
(
"(([:alpha:]+)\\://)?((\\w+)\\:(\\w+)@)?(\\w+(\\.\\w+)*)(\\:(\\d+))?((/\\w+)*(\\.\\w+)?)?(\\?((\\w+=\\w+&)*(\\w+=\\w+)))?(#((\\w+)))?)"
);
int i;

printf("输入一个网址:");
while(scanf("%s",text))
{
MatchResult result = regexp.Match(text);
if ( result.IsMatched() )
{
/*
for(i=0;i<result.MaxGroupNumber();i++)
{
printf("%d=%.*s\n", i,result.GetGroupEnd(i) - result.GetGroupStart(i), text + result.GetGroupStart(i));
}
*/

// 解析网址
printf("网址:%.*s\n", result.GetGroupEnd(0) - result.GetGroupStart(0), text + result.GetGroupStart(0));
printf("协议类型:%.*s\n",result.GetGroupEnd(2) - result.GetGroupStart(2), text + result.GetGroupStart(2));
printf("用户名:%.*s\n",result.GetGroupEnd(4) - result.GetGroupStart(4), text + result.GetGroupStart(4));
printf("用户密码:%.*s\n",result.GetGroupEnd(5) - result.GetGroupStart(5), text + result.GetGroupStart(5));
printf("服务器IP或域名:%.*s\n",result.GetGroupEnd(6) - result.GetGroupStart(6), text + result.GetGroupStart(6));
printf("服务器端口:%.*s\n",result.GetGroupEnd(9) - result.GetGroupStart(9), text + result.GetGroupStart(9));
printf("应用程序目录:%.*s\n",result.GetGroupEnd(10) - result.GetGroupStart(10), text + result.GetGroupStart(10));
printf("查询参数:%.*s\n",result.GetGroupEnd(14) - result.GetGroupStart(14), text + result.GetGroupStart(14));
printf("锚:%.*s\n\n",result.GetGroupEnd(18) - result.GetGroupStart(18), text + result.GetGroupStart(18));

}
else
{
printf("\"%s\" 是一个非法的网址!!!\n",text);
}
printf("输入一个网址:");
}

return 0;
}

/*
运行结果:

输入一个网址:http://user:pass@myserver.com:800/myapp1/myapp2/index.html?key1=value1&key2=value2#anchor
网址:http://user:pass@myserver.com:800/myapp1/myapp2/index.html?key1=value1&key2=value2#anchor
协议类型:http
用户名:user
用户密码:pass
服务器IP或域名:myserver.com
服务器端口:800
应用程序目录:/myapp1/myapp2/index.html
查询参数:key1=value1&key2=value2
锚:anchor
*/
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-09
compare()函数比较字符串的前几个字符是否是http追问

是的 跟http://www.baidu.com/一样

追答

不明白你的意思。

用c语言判断网址怎么做呢?
http:\/\/zhidao.baidu.com\/question\/311110938.html?an=0&si=1 判断网址算法:最简单的当然是正则表达式了。我们看到标准网址(URL)的 7 个部分,有 6 个分割符号,分别是::\/\/ :\/ ?在浏览器里面,只有第 3 部分是必须填写的,也是我们日常写的最多的。用到的资源文件:头文件 deelx.h,可以到...

如何用C语言打开网站?
参考代码如下:include <windows.h>int main(void){ ShellExecute(NULL, "open", "http:\/\/www.baidu.com", NULL, NULL, SW_MINIMIZE); return 0;}例子中是最小化打开的,还可以是最大化SW_MAXIMIZE,隐藏SW_HIDE等。

C语言打开一个网页,用指定浏览器
ShellExecute 第三个参数指定浏览器的执行文件全名;第四个参数指定网址。例如用IE打开www.baidu.com: ShellExecute(0, "open", "C:\\\\Program Files\\\\Internet Explorer\\\\iexplore.exe", "http:\/\/www.baidu.com", NULL, SW_SHOW);一般浏览器都支持网址参数。如果某浏览器显示默认主页,说明该浏览...

if(ch==‘1’)在c语言中是啥意思
ch == '1' \/\/ 判断 变量ch 是否等于字符(ASCII码) '1'。这个条件是否成立,成立为真,反之为假。

网页的源文件(程序)怎样用 c (MS TC)语言打开调试??
program ...;begin ...end.

如何准确的判断一个网站是使用什么语言编写的?
一般的情况看页面的后缀名:1、Server Side Includes 技术,拓展名为.shtml或.html或.htm 。2、PHP技术,拓展名为.php 。3、JSP技术,拓展名为.jsp或.jsf(JSF技术是JSP技术的拓展) 。4、ASP.NET技术,拓展名为.aspx (x 代表extension) 。5、ASP技术,拓展名为.asp。6、ColdFusion技术,拓展名为...

c语言中代表任意字符的方法
我不记得C语言中是否有像VB中的left和right之类取一个字符串中的某一段的函数,可以这样做:先计算被判断的字符串的长度,目的是找到它最后一个字符,再使用循环检查最后七个字符是不是“.qq.com”,这个过程可以做成一个函数。希望对你有用。

用C语言 怎么做出这个来
用MFC,一边学MFC,一边做,小半天功夫指定能写出来。\/\/main.cpp include <windows.h> 这些按钮,输入框其实就是调用一些windows api完成的。给你来段实际的代码:\/* The class is registered, let's create the program*\/ \/\/WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX 初始一个...

C语言中的反斜杠b()是什么意思
C语言的斜杠\\和反斜杠\/怎么区分啊 1、正斜杠\/ 上面向右倾斜,反斜杠\\ 上面向左倾斜。 2、正斜杠\/表示除法,分隔。在windows系统中通常用来分隔命令列引数,\/表示选项等。不能作为档名。反斜杠\\,在windows系统中用来表示目录。而在unix系统中,\/表示目录。由于web遵循unix命名,所以在网址(URL)...

怎么用c语言画出这个图形啊?
给一个画图的思路:这个图应该是把一个正六边形绕一个顶点旋转的图形(每次旋转10度)。具体怎么画。。。可能需要学习gui,这就比较麻烦了

相似回答