【发布时间】:2016-05-04 01:25:42
【问题描述】:
所以基本上,我需要找出一个字符串是否以[URL] 开头并以[/URL] 结尾。
我现在正在做:
const char *urlStart;
// ...
urlStart = strstr(message, "[URL]");
if (urlStart == NULL) {
urlStart = strstr(message, "[url]");
}
if (urlStart == NULL) {
return NULL;
}
根据cplusplus.com,“指向str2中指定的整个字符序列的str1中第一次出现的指针”。
这是否意味着我可以做到这一点?
/*
* If the pointer to message is the same as urlStart,
* message begins with urlStart
*/
if (message != urlStart) {
return NULL;
}
// URL starts 5 characters after [URL]
urlStart += 5;
初步测试似乎表明这不起作用。
完整的函数位于here。
【问题讨论】:
-
NULL+ 5 永远不会等于NULL。换句话说,你需要先检查来自strstr的返回值,然后再对其进行数学运算。 -
@user3386109 感谢您指出这一点!最初我的代码是
strstr(message, "http://"),所以我不需要将指针增加 5 个字符。 -
是的,现在代码可以工作了。认为这个问题值得保留@user3386109?
-
我刚刚取消删除了@user3386109 的问题。我可能很快就会切换用户帐户。
标签: c string substring c-strings strstr