您的位置:首页 > 其它

简单解析URL

2015-11-21 00:00 344 查看
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 1024+10

char url[MAXN] = "http://study.163.com/curricula/cs.htm";

int main(int argc, char *argv[])
{
const char *parseptr1;
const char *parseptr2;
char host[BUFSIZ];
char resource[BUFSIZ];
int len, i;

parseptr2 = url;

parseptr1 = strchr(parseptr2, ':');

if(NULL == parseptr1)
{
printf("protocol: Default <http>\n");/*解析协议*/
parseptr1 = strchr(parseptr2,'/');
len = parseptr1 - parseptr2;
if(NULL == parseptr1)  /*解析主机名*/
{
printf("host: ");
for(i = 0; i < strlen(parseptr2); i++)
{
printf("%c", parseptr2[i]);
}
strcpy(host, parseptr2);
printf("\n");
}
else
{
printf("host: ");
for(i = 0; i < len; i++)
{
printf("%c", parseptr2[i]);
}
strcpy(host, parseptr2);
printf("\n");
}
printf("resource: "); /*解析资源名*/
for(i = len; i < strlen(parseptr2); i++)
{
printf("%c", parseptr2[i]);
}
strcpy(resource, parseptr2);
printf("\n");
}
else
{
len = parseptr1 - parseptr2;
printf("protocol: "); /*解析协议*/
for(i = 0; i < len; i++)
{
printf("%c", parseptr2[i]);
}
printf("\n");

parseptr1++;  /*让parseptr1指向“//”的第一个字符*/
parseptr2 = parseptr1;  /*让parseptr2指向“//”的第一个字符*/
for(i = 0; i < 2; i++)
{
parseptr2++;  /*让parseptr2指向“//”后面的第一个字符*/
}

parseptr1 = strchr(parseptr2, '/');
len = parseptr1 - parseptr2;
printf("host: "); /*解析主机名*/
if(NULL == parseptr1)
{
for(i = 0; i < strlen(parseptr2); i++)
{
printf("%c", parseptr2[i]);
}
strcpy(host, parseptr2);
printf("\n");
}
else
{
for(i = 0; i < len; i++)
{
printf("%c", parseptr2[i]);
}
strcpy(host, parseptr2);
printf("\n");
}

printf("resource: ");/*解析资源名*/
for(i = len; i < strlen(parseptr2); i++)
{
printf("%c", parseptr2[i]);
}
strcpy(resource, parseptr2);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: