C извлечь слово из строки между двумя словами - PullRequest
2 голосов
/ 29 марта 2012

Я пишу программу на C, и одна из моих проблем состоит в том, чтобы извлечь слово между двумя словами, как показано ниже.

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

Мне нужно извлечь слово между "Group:" и "/", два слова (Group: "&" / ") всегда будут там, но слова между ними могут измениться, а в некоторых случаях они могут быть ничего ... (в вышеприведенном примере выводом будет "ДРУГОЙ ПРИМЕР"

Может ли кто-нибудь помочь мне с фрагментом C для вышеупомянутого?

Ответы [ 2 ]

7 голосов
/ 29 марта 2012

Посмотрите на функцию 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 голос
/ 29 марта 2012

Используйте strstr для группы, увеличивайте этот указатель на длину группы (6).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...