strtok与strtok_s
时间: 2023-11-15 19:56:32 浏览: 189
strtok的缺陷,使用strtok_s函数更新安全度
strtok和strtok_s都是用来分割字符串的函数,但是它们有一些不同之处。strtok是标准C库函数,而strtok_s是Microsoft Visual Studio C++中的安全版本。
strtok函数的原型为:
char *strtok(char *str, const char *delim);
其中,str是要分割的字符串,delim是分隔符。该函数会返回分割后的第一个子字符串,并将原字符串中的分隔符替换为'\0'。每次调用该函数时,需要将str设置为NULL,以便继续分割下一个子字符串。
而strtok_s函数的原型为:
char *strtok_s(char *str, const char *delim, char **context);
其中,context是一个指向指针的指针,用于存储上一次调用该函数时的位置。该函数会返回分割后的第一个子字符串,并将原字符串中的分隔符替换为'\0'。每次调用该函数时,需要将str设置为NULL,以便继续分割下一个子字符串。同时,context也需要设置为NULL,以便在第一次调用该函数时初始化。
相比于strtok,strtok_s更加安全,因为它需要传入一个指向指针的指针来存储上一次调用该函数时的位置,避免了多线程环境下的竞争问题。
阅读全文