2012-02-27 4 views
4

3つのCスタイルの文字列、,char buf_2[1024]、およびchar buf_3[1024]があります。私はそれらをトークン化し、すべての3つのトークンで最初のトークンで処理し、3つのトークンから2番目のトークンを使って同じことをしたい。明らかに、私はstrtokと呼ぶことができ、トークン。または、代わりに、すべてのトークンを前処理し、3つの配列に貼り付けてそこから移動しますが、もしあれば、よりクリーンな解決策が必要です。複数の文字列を同時にトークン化する

+0

はここにいくつかの例のスケルトンコードですか? – jrok

+0

あなたは2つの 'buf_1'を持っています。おそらく間違い – ewok

+0

@jrok、それらはすべてトークンの同じ番号を持っています –

答えて

9

再入可能バージョンstrtokstrtok_rが3番目のパラメータを使用して、関数内の静的変数ではなく文字列にその位置を保存するように思えます。文字列ごとのトークンの数が一致しない場合はどう

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); 
} 
+0

パーフェクト、ありがとう。 –

関連する問題