strtok()与strtok_r()函数

时间:2022-01-11 17:01:04

头文件:string.h

原型: char *strtok(char *str, const char *delim);

char *strtok_r(char *str, const char *delim, char **saveptr);

含义:根据分隔符delim分割str并提取结果

一、strtok_r为strtok的线程安全版本,其原理为strtok_r为可重入函数。

二、若只是分割一次,delim为分隔符,str为需要分割的字符串,函数执行后,分隔符被'\0'替换,返回的结果和str为分隔符之前的字符 串(包括替换后的'\0'),saveptr中保存的是分隔符之后的字符串。

三、连续分割情况下,函数第一次执行同二,从第二次执行时,str应为NULL,saveptr为上次调用后返回的值,不可修改。这是因为this 指针,并且函数会将使用过的分隔符用NULL替换。