从C中的字符串中提取Web地址

前端之家收集整理的这篇文章主要介绍了从C中的字符串中提取Web地址前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的代码有问题,我需要你的帮助!我需要做的是编写一个函数提取从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);
}

请注意,s2必须足够大以包含提取的Web地址,否则您可能会遇到段错误.

原文链接:https://www.f2er.com/c/118470.html

猜你在找的C&C++相关文章