Я пытаюсь извлечь URL из строк.Итак, я написал что-то вроде этого:
#include "string.h"
#include "stdio.h"
#define BAD(x) (!(x) || (*(x) == '\0'))
static char *extract_link(char *string)
{
static char url[512];
int length;
char *st;
char *rl;
char *rl2;
url[0] = '\0';
rl = strstr(string, "http://");
if (!BAD(rl))
{
if (strstr(rl, " "))
{
st = strstr(rl, " ");
length = strlen(rl) - strlen(st);
strncpy(url, rl, length);
url[length] = '\0';
return url;
}
return rl;
}
rl2 = strstr(string, "www.");
if (!BAD(rl2))
{
if (strchr(rl2, ' '))
{
st = strstr(rl2, " ");
length = strlen(rl2) - strlen(st);
strncpy(url, rl2, length);
url[length] = '\0';
return url;
}
return rl2;
}
return NULL;
}
int main()
{
char *string1 = "We have a http://www.youtube.com/watch?v=zyP48_0C1DM&feature=featured here";
char *string2 = "And We have a www.scribd.com/doc/52344388/JOINT-STATEMENT-ON-U-S-FUNDING-FOR-GLOBAL-CHILD-SURVIVAL-AND-MATERNAL-HEALTH or whatsoever";
char *x = extract_link(string1), *y = extract_link(string2);
if (!BAD(x))
printf("%s\n", x);
if (!BAD(y))
printf("%s\n", y);
return 0;
}
Но я получаю одни и те же результаты снова и снова.Вывод:
www.scribed.com / doc / 52344388 / СОВМЕСТНОЕ ЗАЯВЛЕНИЕ НА ФИНАНСИРОВАНИЕ ДЛЯ ГЛОБАЛЬНОГО РЕБЕНКА-ВЫЖИВАНИЯ-И-МАТЕРИАЛЬНОГО ЗДОРОВЬЯ www.scribed.com/doc / 52344388 / СОВМЕСТНОЕ ЗАЯВЛЕНИЕ НА ФИНАНСИРОВАНИЕ ДЛЯ ГЛОБАЛЬНОГО РЕБЕНКА-ВЫЖИВАНИЯ-И-МАТЕРИАЛЬНОГО ЗДОРОВЬЯ
Должно быть так:
http://www.youtube.com/watch?v=5fuUTMJ8WRA&feature=feedrec_grec_index www.scribed.com/doc/52344388/JOINT-STATEMENT-ON-US-FUNDING-FOR-GLOBAL-CHILD-SURVIVAL-AND-MATERNAL-HEALTH
Итак... что я делаю не так?Что вы думаете о коде выше.Что-то, что мне нужно изменить или переписать?