Chinaunix首页 | 论坛 | 博客
  • 博客访问: 386224
  • 博文数量: 284
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1707
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-14 16:38
文章分类

全部博文(284)

文章存档

2015年(6)

2014年(278)

我的朋友

分类: C/C++

2014-09-04 15:13:55

1. [代码]容易写成自己输入URL,这里测试一个例子     
#include
#include
#include
#include
#define MAXN 1024+10
char url [MAXN] = "";
 
int main()
{
    const char *parseptr1;
    const char *parseptr2;
    int len;
    int i;
    parseptr2 = url;
    parseptr1 = strchr(parseptr2, ':');
    if ( NULL == parseptr1 ) {
        printf("URL错误!\n");
        return 0;
    }
    len = parseptr1 - parseptr2;
    for ( i = 0; i < len; i++ ) {
        if ( !isalpha(parseptr2[i]) ) {
            printf("URL错误!\n");
            return 0;
        }
    }
    printf("protocol: ");
    for(i=0;i         printf("%c",parseptr2[i]);
    printf("\n");//解析协议
    parseptr1++;
    parseptr2 = parseptr1;
    for ( i = 0; i < 2; i++ ) {
        if ( '/' != *parseptr2 ) {
            printf("URL错误!\n");
            return 0;
        }
        parseptr2++;
    }
    parseptr1 = strchr(parseptr2, ':');
    if ( NULL == parseptr1 )//判断有无端口号
    {
        parseptr1 = strchr(parseptr2, '/');
        if ( NULL == parseptr1 ) {
        printf("URL错误!\n");
        return 0;}
        len = parseptr1 - parseptr2;
        printf("host: ");
        for(i=0;i            printf("%c",parseptr2[i]);
        printf("\n");//解析主机
    }
    else{
    len = parseptr1 - parseptr2;
    printf("host: ");
    for(i=0;i         printf("%c",parseptr2[i]);
    printf("\n");
    parseptr1++;
    parseptr2 = parseptr1;
    parseptr1 = strchr(parseptr2, '/');
    if ( NULL == parseptr1 ) {
        printf("URL错误!\n");
        return 0;
    }
    len = parseptr1 - parseptr2;
    printf("port: ");
    for(i=0;i         printf("%d",(parseptr2[i]-48));
    printf("\n");//解析端口
    }
    parseptr1++;
    parseptr2 = parseptr1;
    while ( '\0' != *parseptr1 && '?' != *parseptr1  && '#' != *parseptr1 ) {
        parseptr1++;
    }
    len = parseptr1 - parseptr2;
    printf("path: ");
        for(i=0;i            printf("%c",parseptr2[i]);
        printf("\n");//解析路径
    parseptr2=parseptr1;
    if ( '?' == *parseptr1 ) {
        parseptr2++;
        parseptr1 = parseptr2;
        while ( '\0' != *parseptr1 && '#' != *parseptr1 ) {
            parseptr1++;
        }
        len = parseptr1 - parseptr2;
    printf("query: ");
    for(i=0;i         printf("%c",parseptr2[i]);//判断有无询问并解析
    printf("\n");
    }
    parseptr2=parseptr1;
    if ( '#' == *parseptr1 ) {
        parseptr2++;
        parseptr1 = parseptr2;
        while ( '\0' != *parseptr1 ) {
            parseptr1++;
        }
        len = parseptr1 - parseptr2;
    printf("fragment: ");
    for(i=0;i         printf("%c",parseptr2[i]);
    printf("\n");//判断有无片段并解析
         
    }
}    

阅读(2129) | 评论(0) | 转发(0) |
0

上一篇:C/C++连接查询MYSQL

下一篇:Download rtsp.c

给主人留下些什么吧!~~