2012-03-29 119 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

相關問題