我正在编写一个C程序,其中一个问题是从以下两个单词之间提取一个单词。
ac_auto_lvalue[] =
"ONLY / GROUP: OTHERS EXAMPLE /-----------------------------";
我需要提取“Group:”和“/”之间的单词,这两个单词(“Group:”和“/”)将始终存在,但其中的单词可能会更改,在某些情况下可能没有任何单词...(在上面的示例中,输出将是“OTHERS EXAMPLE”)
有人可以帮我写一个C片段吗?
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;
}
使用strstr函数来查找Group,将指针增加Group的长度(6)。
strstr()
函数会很有用。 - hmjd