我已编写代码来检查query string
Logic ::如果query string
为"?"
,则应删除query string
中的所有字符并打印vailid URL
。
char str[] = "http://john.org/test.mp4?iufjdlwle";
char *pch;
pch = strtok(str,"?");
printf("%s\n",pch);
输出:
bash-3.2$ ./querystring
http://john.com/test.mp4
但我必须再检查一下
URL
我试过这种方式, 继续编码
char *final;
final = pch+(strlen(pch)-3);
printf("%s\n",final);
if(strcasecmp(p,"mp4"))
printf("falure case\n");
else
printf("Success case\n");
它仅适用于.mp4
扩展。
如果我将*.mpeg
或*.m3u8
或*.flv
作为附加信息,则会失败。
有人可以指导我如何解决这个问题并使其有效吗?
答案 0 :(得分:2)
查询字符串是在问号?
之后开始的,很好。
您应该尝试定义扩展名是什么。对我来说,这是在url的最后一个组件中的点(.
)之后可能发生的事情,其中组件用斜杠分隔(/
)
所以你应该这样做:
?
/
.
/
如果找到一个,那么它就是扩展的起点。
因此假设pch
包含没有任何查询字符串的url,您可以执行以下操作:
char * ix = strrchr(pch, '/');
if (ix == NULL) {
// an URL without / is rather weird, better report and abort
...
}
ix = strrchr(ix, '.');
if (ix == NULL) {
// no extension here: ignore the url
...
}
else {
// found an URL containing an extension: process it
// ix+1 points to the extension
...
}