#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; }