考虑以下使用 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 将分隔符字符串中的每个字符都作为分隔符。但在某些情况下,它会这样做,但在少数情况下,它会产生意想不到的结果。谁能帮我理解这一点?