strtok() फ़ंक्शन
स्ट्रेटोक () फ़ंक्शन का सिंटैक्स इस प्रकार है -
char* strtok(char* string, const char* limiter);
इनपुट स्ट्रिंग स्ट्रिंग और एक सीमांकक वर्ण सीमक। strtok() सीमांकित वर्ण के आधार पर स्ट्रिंग को टोकन में विभाजित करेगा।
हम strtok() से स्ट्रिंग्स की सूची की अपेक्षा कर सकते हैं। लेकिन, फ़ंक्शन एक स्ट्रिंग देता है क्योंकि strtok (इनपुट, लिमिटर) को कॉल करने के बाद, यह पहला टोकन लौटाएगा।
लेकिन हमें NULL इनपुट स्ट्रिंग पर फ़ंक्शन को बार-बार कॉल करना पड़ता है, जब तक कि हमें NULL नहीं मिल जाता है! आम तौर पर, हम strtok (NULL, delim) को तब तक कॉल करते रहते हैं जब तक कि यह NULL नहीं लौटता।
उदाहरण
strtok() फ़ंक्शन के लिए C प्रोग्राम निम्नलिखित है:-
#include <stdio.h>
#include <string.h>
int main() {
char input_string[] = "Hello Tutorials Point!";
char token_list[20][20];
char* token = strtok(input_string, " ");
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(NULL, " "); // Get the next token. Notice that input=NULL now!
}
// 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!
इनपुट स्ट्रिंग "हैलो ट्यूटोरियल पॉइंट" है, और हम इसे रिक्त स्थान द्वारा टोकन करने का प्रयास कर रहे हैं।
हम strtok (इनपुट, " ") का उपयोग करके पहला टोकन प्राप्त करते हैं। यहां डबल कोट्स डिलीमीटर हैं और सिंगल कैरेक्टर स्ट्रिंग हैं!
बाद में, हम strtok(NULL, " ") और लूप का उपयोग करके टोकन प्राप्त करते रहते हैं जब तक कि हमें strtok() से NULL नहीं मिल जाता।