2017-02-25 11 views
0

は、私はフォーマットstrtok()を使って文字列の最後のトークンを格納していますか?

​​

のSTRと呼ばれる文字列があると、私はそう

char* tok1 = strtok(str, ", "); 
char* tok2 = strtok(str, ", "); 
char* tok3 = strtok(str, "\0"); //this line is incorrect 

のように、独自のchar型の配列に各トークンを格納したいしかし、私は、第三のトークンためにエラーが発生しますstrtok()はnull以外の入力を期待しています。 strtok()は2つのパラメータ(文字列と区切り文字)を必要とするため、最終的なトークンをどのように取得しますか?

+1

\ "と\" \ "は効果的な違いはありません。 '\ 0'はヌルターミネータであるため、文字列中の実際の文字として使うことはできません。 – Barmar

+0

それで最後のトークンの区切り文字はどうすればいいですか?ヌルターミネータ以外の値の後には他の値はありません。それは単に ""でしょうか? – EgerStu

+1

デリミタを探す必要がないので '' "を使うだけです。 – Barmar

答えて

4

あなたは同じ文字列を解析している場合は、最初のパラメータの値は、すべての後続の呼び出しのためのNULLにする必要があります(はstrtokの最初の呼び出し時に

char* tok1 = strtok(str, ", "); 
char* tok2 = strtok(NULL, ", "); 
char* tok3 = strtok(NULL, ""); 

)解析される文字列があるべきstrで指定された後続の各呼び出しで、同じ文字列を解析する必要があります。strはNULLにする必要があります。

関連する問題