long_textkeyword1keyword2为三个char*指针。 _keyword1__keyword2_long_text的两个子字符串。使用strstr(long_text, keyword1)我可以获得一个char*,它指向keyword1中的long_text的第一个匹配项,而使用strstr(long_text, keyword2)我可以获得一个char*,它指向keyword2中的long_text的第一个匹配项。 keyword1keyword2不重叠。

有没有一种方法可以使用从 long_text 获得的两个keyword1keyword2中提取一个子字符串来表示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';

08-19 18:40