strtokを使用して文字列madddyを分割する次のスニペットについて考えてみます。
char* str = (char*) malloc(sizeof("Madddy"));
strcpy(str,"Madddy");
char* tmp = strtok(str,"d");
std::cout<<tmp;
do
{
std::cout<<tmp;
tmp=strtok(NULL, "dddy");
}while(tmp!=NULL);
正常に動作し、出力はMaです。しかし、strtokを次のように変更することにより、
tmp=strtok(NULL, "ay");
出力はMaddになります。では、strtokはどのように正確に機能しますか?strtokが区切り文字列にあるすべての文字を区切り文字として受け取ることを期待していたので、この質問があります。しかし、それがそのように行われている場合もありますが、予期しない結果をもたらす場合もあります。誰かが私がこれを理解するのを手伝ってもらえますか?