2012-03-29 79 views
2

我正在编写一个C程序,其中一个问题是在两个单词之间提取一个单词,如下所示。C从两个单词之间的字符串中提取单词

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

我需要提取“集团”之间的字和“/”,这两个词(组:” &‘/’)将永远存在,但两者之间的话可以在一些改变,情况下,有可能是什么......(在上面的例子中输出将是“OTHERS EXAMPLE”

谁能帮助我与C段为上述?

+0

你可以显示你到目前为止的任何代码吗? 'strstr()'会被使用。 – hmjd 2012-03-29 15:55:18

+0

否;我没有任何代码,很长一段时间,我没有用C编写任何代码,只是为了快速修复这个问题......尽管我会尝试写一些东西并测试...... – Vikas 2012-03-29 16:03:54

回答

6

看看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

为组使用的strstr,增量由该指针(6)的长度

+0

对字符/做同样的事情。假设指向组指针末尾的指针的地址(即'p')由char * a保存,并且'/'的地址由另一个指针char * b提供帮助,那么可以使用memcpy在这两个指针。 – tartar 2012-03-29 15:58:07

相关问题