我真的很惊讶我无法找到一种有效地做到这一点的方法。我已经尝试过strstr,这是与sscanf的组合,但根据我在其他语言中的经验,似乎没有什么能像我期望的那样工作。
我有一个“ ABCDEFG HIJ K BEGINTheMiddleEND LMNO PQRS ”字符。我不知道“ BEGINTheMiddleEND ”在字符串中的哪个位置,我想通过查找“ BEGIN ”和“ END ”的出现并抓住两者之间的内容,以等于“ TheMiddle ”的字符结尾。
完成此任务的最有效方法是什么(查找和子字符串)?
谢谢!
-- 根据答案编辑 --
我试过这个:
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”。(事实证明这是我在这种情况下所需要的)。
再次感谢大家。