【发布时间】:2012-09-25 22:03:47
【问题描述】:
我真的很惊讶我找不到有效的方法来做到这一点。我已经尝试过 strstr,这是一种与 sscanf 的组合,但根据我在其他语言方面的经验,似乎没有什么能像我期望的那样工作。
我有一个字符“ABCDEFG HIJ K BEGINTheMiddleEND LMNO PQRS”。我不知道“BEGINTheMiddleEND”在字符串中的位置,我想通过查找“”的出现以等于“TheMiddle”的字符结尾BEGIN" 和 "END" 并抓住两者之间的内容。
完成此任务的最有效方法是什么(查找和子字符串)?
谢谢!
-- 根据答案进行编辑--
我试过这个:
char *searchString = "ABCDEFG HIJ K BEGINTheMiddleEND LMNO PQRS"
char *t1, *t2;
t1 = strstr(searchString, "BEGIN");
t2 = strstr(t1, "END");
但是从指针的角度来看一定有问题,因为它对我不起作用。 Strstr 只接受两个参数,所以我不确定从前一个指针开始是什么意思。我也不确定如何使用这些指针对其进行子串化,因为它们不是 strpos 返回的整数值,而是字符指针。
再次感谢。
-- 使用最终代码编辑--
对于其他任何人来说,最终的工作代码:
char *searchString = "ABCDEFG HIJ K BEGINTheMiddleEND LMNO PQRS"
char *b = strstr(searchString , "BEGIN");
char *e = strstr(b, "END");
int offset = e - b;
b[offset] = 0;
其中“b”现在等于“BEGINTheMiddle”。 (事实证明这是我在这种情况下所需要的)。
再次感谢大家。
【问题讨论】: