gpt4 book ai didi

c - 从 C 中的字符串中提取网址

转载 作者:太空狗 更新时间:2023-10-29 17:13:49 24 4
gpt4 key购买 nike

我的代码有问题,我需要你的帮助!我需要做的是编写一个函数,从输入的字符串中提取以 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 必须足够大以包含提取的网址,否则您可能会遇到段错误。

关于c - 从 C 中的字符串中提取网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com