令long_text
,keyword1
和keyword2
为三个char*
指针。 _keyword1_
和_keyword2_
是long_text
的两个子字符串。使用strstr(long_text, keyword1)
我可以获得一个char*
,它指向keyword1
中的long_text
的第一个匹配项,而使用strstr(long_text, keyword2)
我可以获得一个char*
,它指向keyword2
中的long_text
的第一个匹配项。 keyword1
和keyword2
不重叠。
有没有一种方法可以使用从 long_text
获得的两个keyword1
从keyword2
中提取一个子字符串来表示char*
和strstr()
之间的字符串?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(){
char* long_text = "this is keyword1 and this is keyword2 in long_text";
char* keyword1 = "keyword1";
char* keyword2 = "keyword2";
char* k1_start = strstr(long_text, keyword1);
char* k2_start = strstr(long_text, keyword2);
// TODO Be able to print " and this is "
return 0;
}
最佳答案
这是你所缺少的部分
// Move k1_start to end of keyword1
k1_start += strlen(keyword1);
// Copy text from k1_start to k2_start
char sub_string[32];
int len = k2_start - k1_start;
strncpy(sub_string, k1_start, len);
// Be sure to terminate the string
sub_string[len] = '\0';