2013-07-25 25 views
0

它已久,因爲我用C語言寫了一個程序我有一個像下面打破串入的部分用C

"VRUWFB02=I.V.R, W.F.B, plan 2, VRUWFB01=I.V.R, W.F.B, plan 1, assa=784617896.9649164, plan24, massmedua=plan12, masspedia=IVR, masojh, jhsfdkl, oijhojomn, oiafofvj, plan" 

的一個字符串,我需要「=」,即VRUWFB02之前拿到的, VRUWFB01,assa,massmedua,masspedia。

我能夠打破字符串,但無法提取那些特定的單詞。

任何一個可以幫我這個

char st[] = "VRUWFB02=I.V.R, W.F.B, plan 2, VRUWFB01=I.V.R, W.F.B, plan 1,assa=784617896.9649164, plan24, massmedua=plan12, masspedia=IVR, masojh, jhsfdkl, oijhojomn, oiafofvj, plan"; 
char *ch; 
regex_t compiled; 
char pattern[80] = " "; 
printf("Split \"%s\"\n", st); 
ch = strtok(st, " "); 
while (ch != NULL) { 
    if(regcomp(&compiled, pattern, REG_NOSUB) == 0) { 
     printf("%s\n", ch); 
    } 
    ch = strtok(NULL, " ,"); 
} 
return 0; 
+0

你可以搜索一些regex.h教程 – nio

+0

@CarlNorum它不會導致帶有「I.V.R,W.F.B,plan 2」字符串的數據嗎? –

+0

不是我用Java寫的程序,我能夠提取單詞,但正如我用C很久以前,我無法在@MartinPerry的C – user1767288

回答

2

這裏是我做了解釋事情一個簡單的例子程序:

#include <string.h> 
#include <stdio.h> 

int main(void) 
{ 
    char s[] = "VRUWFB02=I.V.R, W.F.B, plan 2, VRUWFB01=I.V.R, W.F.B, " 
       "plan 1, assa=784617896.9649164, plan24, massmedua=plan12, " 
       "masspedia=IVR, masojh, jhsfdkl, oijhojomn, oiafofvj, plan"; 
    char *p; 
    char *q; 

    p = strtok(s, " "); 
    while (p) 
    { 
     q = strchr(p, '='); 
     if (q) 
      printf("%.*s\n", (int)(q - p), p); 
     p = strtok(NULL, " "); 
    } 

    return 0; 
} 

輸出:

$ ./example 
VRUWFB02 
VRUWFB01 
assa 
massmedua 
masspedia 

的基本思想是通過空格分割字符串,然後查找在=字符大塊。如果出現,打印該塊的所需部分。

0

可以使用strtok功能,斷線。你可以在我參考的網頁上找到一個使用它的例子。

+0

我用Strtok函數來打破字符串,但我怎麼能提取確切的單詞。我將發佈我所做的代碼。 – user1767288

+0

@ user1767288您可以使用strtok以空格符號''分隔字符串。你可以遍歷結果字符串。如果其中包含「=」字符,則可以使用strcpy函數複製該塊的一部分,或者再次使用strtok。 –

+0

是的,我嘗試過,但你能給我一個關於正則表達式的想法,用於尋找'=' – user1767288