2013-12-13 33 views
1

我對C字符串非常困惑。使用strtok在C中分割字符串

我有字符串,其具有18個元素的數組:炭用戶[18] [50],其中每個元件具有在格式串 「XXXX:YYYY:ZZZZ」

但我只需要ZZZZs,我想將它們存儲在,比方說,焦Z [18] [50]而不是字符* Z一致性(也即將字符*真不明白)

所以我m使用strtok分割字符串

char *split; 
char *temp; 
for (i=0; i<18; i++){ 
    temp = user[i]; 
    split = strtok(temp, ":"); 

    //Wanna do something here 
} 

所以我想在每次迭代分裂是指向串的陣列的指針,元件是:XXXXYYYYZZZZ分開。

我怎樣才能得到ZZZZs並將它們存儲到char z [18] [50]

回答

1

然後你會再兩次得到它調用的strtok,

for (i=0; i<18; i++){ 
    temp = user[i]; 
    split = strtok(temp, ":"); 
    split = strtok(NULL, ":"); 
    split = strtok(NULL, ":"); 
    // Now split is pointing to ZZZZ  

    //Wanna do something here 
} 
+0

謝謝! 我通過做 'strcpy(z [k],split)'成功地將它們存儲在** char z [18] [50] **中。現在我想在所有ZZZZs前面附上AB, ABZZZZZ。我試過 'char ABz [18] [50]; .... strcat(ABz [k],「AB」); strcat(ABz [k],z [k]); ...' 它可以工作,但是當我打印出來一些(不是所有的,比如其中的4個)在AB前面有一些垃圾時,就像&!@ ABZZZZZ。 你知道這是什麼原因嗎? –

+0

@ user2931670:試試這個,** sprintf(ABz [k],「%s%s」,「AB」,split); ** – David

+0

太棒了!像魅力一樣工作。 –

1

rindexfunction is more suitable

#include <stdio.h> 
#include <string.h> 
#include <strings.h> 
int main() { 
    char *split; 
    char buffer[256]; 
    char temp[] = "XXXX:YYYYY:ZZZZZ"; 
    split = rindex(temp, ':') + 1; 
    strcpy(buffer, split); 
    printf("%s\n", buffer); 
    return 0;  

}