C语言中的strtok_r()函数是什么?

这个函数类似于strtok()函数。唯一的关键区别是_r,它被称为可重入函数。

可重入函数是一个可以在其执行过程中被中断的函数。此类函数可用于恢复执行。

由于这个事实,可重入函数是线程安全的,这意味着它们可以被线程安全地中断而不会造成任何伤害。

strtok_r()函数有一个称为上下文的额外参数。以便该功能可以在正确的位置恢复。

语法的strtok_r()功能如下:

#include <string.h>
char *strtok_r(char *string, const char *limiter, char **context);

示例

以下是使用strtok_r()函数的 C 程序-

#include <stdio.h>
#include <string.h>
int main(){
   char input_string[] = "Hello nhooo.com";
   char token_list[20][20];
   char* context = NULL;
   char* token = strtok_r(input_string, " ", &context);
   int num_tokens = 0; //令牌列表的索引。我们将附加到列表中
   while (token != NULL){
      strcpy(token_list[num_tokens], token); // 复制到令牌列表
      num_tokens++;
      token = strtok_r(NULL, " ", &context);
   }
   // 打印令牌列表
   printf("Token List:\n");
   for (int i=0; i < num_tokens; i++) {
      printf("%s\n", token_list[i]);
   }
   return 0;
}
输出结果

执行上述程序时,会产生以下结果 -

Token List:
Hello
Tutorials
Point