在C中获取两个字符串之间的字符串数组

时间:2016-05-30 21:32:01

标签: c arrays string

我正在寻找一种非常简单的方法来返回尾随和前导字符串之间包含的字符串数组。这是一个例子:

char *text = ;;;Text I want]]] Text I don't care about ;;;More Text I want]]] More text I don't care about

调用stringBetweenString(";;;","]]]",text)应该返回一个数组(const char *myArray[2]),其中包含以下值:"Text I want","More Text I want"

不幸的是,我无法访问此应用程序的RegEx,也无法访问外部库。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

不需要regex,因为其他人已经注意到strstr将在字符串中搜索子字符串的出现,并在成功时返回指向子字符串开头的指针,{{ 1}}否则。您可以使用简单的指针算法来解析子串之间的有用文本,例如:

NULL

示例使用/输出

#include <stdio.h>
#include <string.h>

#define MAXC 128

int main (void) {

    char *text = ";;;Text I want]]] Text I don't care about ;;;More "
                "Text I want]]] More text I don't care about";
    char buf[MAXC] = "", *p = text, *ep;

    while ((p = strstr (p, ";;;"))) {
        if ((ep = strstr (p, "]]]"))) {
            strncpy (buf, p + 3, ep - p - 3);
            buf[ep - p - 3] = 0;
            printf ("buf: '%s'\n", buf);
        }
        else
            break;
        p = ep;
    }

    return 0;
}