我开发了自己的strtok版本.只是练习指针的使用.
任何人都可以看到任何限制,或者无论如何我可以改进.
void stvstrtok(const char *source, char *dest, const char token)
{
/* Search for the token. */
int i = 0;
while(*source)
{
*dest++ = *source++;
if(*source == token)
{
source++;
}
}
*dest++ = '\0';
}
int main(void)
{
char *long_name = "dog,sat ,on ,the,rug,in ,front,of,the,fire";
char buffer[sizeof(long_name)/sizeof(*long_name)];
stvstrtok(long_name, buffer, ',');
printf("buffer: %s\n", buffer);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
旁注:"令牌"一词通常用于描述返回的字符串部分.分隔符用于描述分隔标记的事物.因此,为了使您的代码更清晰,您应该将token重命名为delimiter并将dest重命名为token_dest.
你的功能和strtok的差异:
你的函数和strtok之间有几点不同.
话虽这么说,我会提出如何做出更好的功能的建议,而不是更接近strtok实现的功能.
如何改进你的功能(不模仿strtok):
我认为最好进行以下更改: