這聽起來像是你想要的可重入版本strtok
,strtok_r
它使用第三個參數來保存它在字符串中的位置而不是函數中的靜態變量。
下面是一些例子骨架代碼:
char buf_1[1024], buf_2[1024], buf_3[1024];
char *save_ptr1, *save_ptr2, *save_ptr3;
char *token1, *token2, *token3;
// Populate buf_1, buf_2, and buf_3
// get the initial tokens
token1 = strtok_r(buf_1, " ", &save_ptr1);
token2 = strtok_r(buf_2, " ", &save_ptr2);
token3 = strtok_r(buf_3, " ", &save_ptr3);
while(token1 && token2 && token3) {
// do stuff with tokens
// get next tokens
token1 = strtok_r(NULL, " ", &save_ptr1);
token2 = strtok_r(NULL, " ", &save_ptr2);
token3 = strtok_r(NULL, " ", &save_ptr3);
}
如果每串令牌的數量不匹配,怎麼辦? – jrok 2012-02-27 21:56:29
你有2'buf_1's。可能是一個錯誤 – ewok 2012-02-27 21:56:43
@jrok,它們都具有相同數量的標記 – 2012-02-27 22:12:02