⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p1243.cpp

📁 高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程
💻 CPP
字号:
#include <string.h>
#include <stdio.h>

const   int     Limit   = 255;
char    defau [] = "<default>";

char    data [Limit];
char    Protocol [Limit] , Host [Limit] , Port [Limit] , Path [Limit];

void    Work ()
{
        int     pos , len = strlen ( data );
        char    *p , *q1 , *q2;

        p = strstr ( data , "://" );
        pos = p - data;
        strncpy ( Protocol , data , pos ); Protocol [pos] = 0;
        p += 3;

        q1 = strstr ( p , ":" );
        q2 = strstr ( p , "/" );

        if ( q1 == NULL ) {
                strcpy ( Port , defau );

                if ( q2 == NULL ) {
                        pos = len - ( p - data );
                        strncpy ( Host , p , pos ); Host [pos] = 0;
                        strcpy ( Path , defau );
                } else {
                        pos = q2 - p;
                        strncpy ( Host , p , pos ); Host [pos] = 0;
                        pos = len - ( q2 - data ) - 1;
                        strncpy ( Path , q2 + 1 , pos ); Path [pos] = 0;
                }
        } else {
                if ( q2 == NULL ) {
                        pos = q1 - p;
                        strncpy ( Host , p , pos ); Host [pos] = 0;

                        pos = len - ( q1 - data ) - 1;
                        strncpy ( Port , q1 + 1 , pos ); Port [pos] = 0;
                        strcpy ( Path , defau );
                } else {
                        pos = q2 - q1 - 1;
                        if ( pos >= 0 ) {
                                pos = q1 - p;
                                strncpy ( Host , p , pos ); Host [pos] = 0;

                                pos = q2 - q1 - 1;
                                strncpy ( Port , q1 + 1 , pos ); Port [pos] = 0;
                                pos = len - ( q2 - data ) - 1;
                                strncpy ( Path , q2 + 1 , pos ); Path [pos] = 0;
                        } else {
                                pos = q2 - p;
                                strncpy ( Host , p , pos ); Host [pos] = 0;

                                pos = len - ( q2 - data ) - 1;
                                strncpy ( Path , q2 + 1 , pos ); Path [pos] = 0;

                                strcpy ( Port , defau );
                        }
                }
        }

        printf ( "Protocol = %s\n" , Protocol );
        printf ( "Host     = %s\n" , Host );
        printf ( "Port     = %s\n" , Port );
        printf ( "Path     = %s\n" , Path );
        printf ( "\n" );
}

main ()
{
        int     step , total;
        scanf ( "%d" , &total );
        for ( step = 1; step <= total; step ++ ) {
                scanf ( "%s" , data );
                printf ( "URL #%d\n" , step );
                Work ();
        }
}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -