旁注:"令牌"一词通常用于描述返回的字符串部分.分隔符用于描述分隔标记的事物.因此,为了使您的代码更清晰,您应该将token重命名为delimiter并将dest重命名为token_dest.
你的功能和strtok的差异:
你的函数和strtok之间有几点不同.
您的函数所做的只是删除令牌分隔符
您只需调用一次函数来处理字符串的所有部分.使用strtok,您可以为字符串的每个部分多次调用它(后续时间以NULL作为第一个参数).
strtok也会破坏源字符串,而你的代码使用自己的缓冲区(我认为最好像你一样使用你自己的缓冲区).
strtok存储每次调用后第一个参数为NULL的下一个标记的位置.然后将该位置用于后续调用.这不是线程安全的,你的功能是线程安全的.
strtok可以使用多个不同的分隔符,而您的代码只使用一个分隔符.
话虽这么说,我会提出如何做出更好的功能的建议,而不是更接近strtok实现的功能.
如何改进你的功能(不模仿strtok):
我认为最好进行以下更改:
让你的函数只返回'next'标记
当你有*source或*source == delimiter时,打破你的循环
返回指向包含下一个标记的源字符串的第一个字符的指针.该指针可用于后续调用.