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