zoukankan      html  css  js  c++  java
  • 使用C语言解析URL

    1. [代码]容易写成自己输入URL,这里测试一个例子     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #define MAXN 1024+10
    char url [MAXN] = "http://www.google.com:80/wiki/Search?search=train&go=Go#steammachine";
     
    int main()
    {
        const char *parseptr1;
        const char *parseptr2;
        int len;
        int i;
        parseptr2 = url;
        parseptr1 = strchr(parseptr2, ':');
        if ( NULL == parseptr1 ) {
            printf("URL错误! ");
            return 0;
        }
        len = parseptr1 - parseptr2;
        for ( i = 0; i < len; i++ ) {
            if ( !isalpha(parseptr2[i]) ) {
                printf("URL错误! ");
                return 0;
            }
        }
        printf("protocol: ");
        for(i=0;i<len;i++)
            printf("%c",parseptr2[i]);
        printf(" ");//解析协议
        parseptr1++;
        parseptr2 = parseptr1;
        for ( i = 0; i < 2; i++ ) {
            if ( '/' != *parseptr2 ) {
                printf("URL错误! ");
                return 0;
            }
            parseptr2++;
        }
        parseptr1 = strchr(parseptr2, ':');
        if ( NULL == parseptr1 )//判断有无端口号
        {http://www.huiyi8.com/hunsha/chuangyi/
            parseptr1 = strchr(parseptr2, '/');
            if ( NULL == parseptr1 ) {
            printf("URL错误! ");
            return 0;}创意婚纱照片
            len = parseptr1 - parseptr2;
            printf("host: ");
            for(i=0;i<len;i++)
               printf("%c",parseptr2[i]);
            printf(" ");//解析主机
        }
        else{
        len = parseptr1 - parseptr2;
        printf("host: ");
        for(i=0;i<len;i++)
            printf("%c",parseptr2[i]);
        printf(" ");
        parseptr1++;
        parseptr2 = parseptr1;
        parseptr1 = strchr(parseptr2, '/');
        if ( NULL == parseptr1 ) {
            printf("URL错误! ");
            return 0;
        }
        len = parseptr1 - parseptr2;
        printf("port: ");
        for(i=0;i<len;i++)
            printf("%d",(parseptr2[i]-48));
        printf(" ");//解析端口
        }
        parseptr1++;
        parseptr2 = parseptr1;
        while ( '' != *parseptr1 && '?' != *parseptr1  && '#' != *parseptr1 ) {
            parseptr1++;
        }
        len = parseptr1 - parseptr2;
        printf("path: ");
            for(i=0;i<len;i++)
               printf("%c",parseptr2[i]);
            printf(" ");//解析路径
        parseptr2=parseptr1;
        if ( '?' == *parseptr1 ) {
            parseptr2++;
            parseptr1 = parseptr2;
            while ( '' != *parseptr1 && '#' != *parseptr1 ) {
                parseptr1++;
            }
            len = parseptr1 - parseptr2;
        printf("query: ");
        for(i=0;i<len;i++)
            printf("%c",parseptr2[i]);//判断有无询问并解析
        printf(" ");
        }
        parseptr2=parseptr1;
        if ( '#' == *parseptr1 ) {
            parseptr2++;
            parseptr1 = parseptr2;
            while ( '' != *parseptr1 ) {
                parseptr1++;
            }
            len = parseptr1 - parseptr2;
        printf("fragment: ");
        for(i=0;i<len;i++)
            printf("%c",parseptr2[i]);
        printf(" ");//判断有无片段并解析
             
        }
    }   

  • 相关阅读:
    乘法九九表
    #include <time.h>
    【bzoj2060】[Usaco2010 Nov]Visiting Cows拜访奶牛 树形dp
    【codevs1380】没有上司的舞会 树形dp
    【bzoj1060】[ZJOI2007]时态同步 树形dp
    【bzoj2435】[NOI2011]道路修建 树形dp
    【bzoj3573】[HNOI2014]米特运输 树形dp
    【bzoj4027】[HEOI2015]兔子与樱花 树形dp+贪心
    【codevs1163】访问艺术馆 树形dp
    【bzoj1864】[ZJOI2006]三色二叉树 树形dp
  • 原文地址:https://www.cnblogs.com/xkzy/p/3956162.html
Copyright © 2011-2022 走看看