Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

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 Tutorials Point";
   char token_list[20][20];
   char* context = NULL;
   char* token = strtok_r(input_string, " ", &context);
   int num_tokens = 0; // Index to token list. We will append to the list
   while (token != NULL){
      strcpy(token_list[num_tokens], token); // Copy to token list
      num_tokens++;
      token = strtok_r(NULL, " ", &context);
   }
   // Print the list of tokens
   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

  1. C言語のstrcmp()関数とは何ですか?

    Cライブラリ関数intstrcmp(const char * str1、const char * str2) str1が指す文字列を比較します str2が指す文字列へ 。 文字の配列は文字列と呼ばれます。 宣言 以下は配列の宣言です- char stringname [size]; 例-charstring[50];長さ50文字の文字列 初期化 単一文字定数の使用- char string[10] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’ ,&ls

  2. C言語のstrcpy()関数とは何ですか?

    Cライブラリ関数char* strcpy(char * dest、const char * src) srcが指す文字列をコピーします 宛先へ 。 文字の配列は文字列と呼ばれます。 宣言 以下は配列の宣言です char stringname [size]; 例-charstring[50];長さ50文字の文字列 初期化 単一文字定数の使用- char string[10] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’ ,‘\0’}