我的代码有问题,我需要你的帮助!我需要做的是编写一个函数来提取从www开始的网址.并以输入的字符串结尾.edu.输入的字符串中没有空格,因此scanf()在这里应该可以正常工作.
例如:
http://www.school.edu/admission.提取的地址应为www.school.edu.
这是我到目前为止所提出的,它显然没有用,不幸的是我想不出任何其他的东西.
void extract(char *s1,char *s2) { int size = 0; char *p,*j; p = s1; j = s2; size = strlen(s1); for(p = s1; p < (s1 + size); p++) { if(*p == 'w' && *(p+1) == 'w' && *(p+2) == 'w' && *(p+3) == '.'){ for(p; p < (p+4); p++) strcat(*j,*p); } else if(*p=='.' && *(p+1)=='e' && *(p+2)=='d' && *(p+3)=='u'){ for(p; (p+1) < (p+4); p++) strcat(*j,*p); } } size = strlen(j); *(j+size+1) = '\0'; }
解决方法
所以最简单的方法可能是:
#include <stdio.h> int main(void) { char str[1000]; sscanf("http://www.school.edu/admission","%*[^/]%*c%*c%[^/]",str); puts(str); }
现在,这里是固定代码:
#include <stdio.h> #include <string.h> void extract(char *s1,char *s2) { size_t size = strlen(s1),i = 0; while(memcmp(s1 + i,"www.",4)){ i++; } while(memcmp(s1 + i,".edu",4)){ *s2++ = *(s1 + i); i++; } *s2 = '\0'; strcat(s2,".edu"); } int main(void) { char str1[1000] = "http://www.school.edu/admission",str2[1000]; extract(str1,str2); puts(str2); }