यह फंक्शन strtok() फंक्शन के समान है। एकमात्र मुख्य अंतर _r है, जिसे री-एंट्रेंट फंक्शन कहा जाता है।
एक री-एंट्रेंट फंक्शन एक ऐसा फंक्शन है जिसे इसके निष्पादन के दौरान बाधित किया जा सकता है। इस प्रकार के फंक्शन का उपयोग निष्पादन को फिर से शुरू करने के लिए किया जा सकता है।
इस तथ्य के कारण, री-एंट्रेंट फंक्शन थ्रेड-सेफ होते हैं, अर्थात वे थ्रेड्स द्वारा बिना किसी नुकसान के सुरक्षित रूप से बाधित किए जा सकते हैं।
strtok_r() फंक्शन में एक अतिरिक्त पैरामीटर होता है जिसे कॉन्टेक्स्ट कहा जाता है। ताकि फंक्शन सही जगह पर फिर से शुरू हो सके।
strtok_r() फंक्शन का सिंटैक्स निम्नानुसार है:
#include <string.h> char *strtok_r(char *string, const char *limiter, char **context);
उदाहरण
निम्नलिखित C प्रोग्राम strtok_r() फंक्शन के उपयोग के लिए है:
#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; // टोकन लिस्ट का इंडेक्स। हम लिस्ट में जोड़ेंगे 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