我正在写一个C程序,其中一个问题是在两个单词之间提取一个单词如下。
ac_auto_lvalue[] =
"ONLY / GROUP: OTHERS EXAMPLE /-----------------------------";
我需要在“Group:”和“/”之间提取单词,两个单词(Group:“&”/“)将始终存在,但两者之间的单词可能会发生变化,在某些情况下可能会有变化什么都不是......(在上面的例子中输出将是“OTHERS EXAMPLE”
任何人都可以帮我处理上述的C片段吗?
答案 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)的长度。