C从两个单词之间的字符串中提取单词

时间:2012-03-29 15:52:44

标签: c extract delimiter

我正在写一个C程序,其中一个问题是在两个单词之间提取一个单词如下。

ac_auto_lvalue[] =
    "ONLY / GROUP:  OTHERS EXAMPLE  /-----------------------------";

我需要在“Group:”和“/”之间提取单词,两个单词(Group:“&”/“)将始终存在,但两者之间的单词可能会发生变化,在某些情况下可能会有变化什么都不是......(在上面的例子中输出将是“OTHERS EXAMPLE”

任何人都可以帮我处理上述的C片段吗?

2 个答案:

答案 0 :(得分:7)

查看strstr功能。它允许您在另一个字符串中找到特定字符串(例如,"Group:")的第一个匹配项的指针。一旦你有两个指针(到你的字符串的开头和结尾),你可以使用malloc分配足够的内存(不要忘记终止零'\0'),使用memcpy来复制字符,最后将字符串零终止。

int main() {
    char ac_auto_lvalue[] = "ONLY / GROUP: OTHERS EXAMPLE /-----------------------------";
    // Adding 7 to compensate for the length of "GROUP: "
    const char *p1 = strstr(ac_auto_lvalue, "GROUP: ")+7;
    const char *p2 = strstr(p1, " /");
    size_t len = p2-p1;
    char *res = (char*)malloc(sizeof(char)*(len+1));
    strncpy(res, p1, len);
    res[len] = '\0';
    printf("'%s'\n", res);
    return 0;
}

答案 1 :(得分:1)

对组使用strstr,将该指针增加Group(6)的长度。