কম্পিউটার টিউটোরিয়াল

সি ভাষায় strtok_r() ফাংশন কী?

strtok_r() হল strtok() ফাংশনের রি-এনট্র্যান্ট (re-entrant) ভার্সন। রি-এনট্র্যান্ট ফাংশন হল এমন ফাংশন যা এক্সিকিউশনের মাঝপথে ইন্টারাপ্ট হয়ে আবার সঠিক জায়গা থেকে রিজিউম করা যায়। এটা থ্রেড-সেফ।

সিনট্যাক্স

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

এখানে context একটি পয়েন্টার-টু-পয়েন্টার যা ফাংশনের স্টেট সংরক্ষণ করে রাখে।

উদাহরণ

#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);
        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

strtok() vs strtok_r()

  • strtok() স্ট্যাটিক বাফার ব্যবহার করে → থ্রেড-সেফ নয়।
  • strtok_r() কনটেক্সট প্যারামিটার নেয় → থ্রেড-সেফ।
  1. C ভাষায় strncpy() ফাংশন কী?

  2. C ভাষায় strcmp() ফাংশন কী?

  3. C ভাষায় strcat() ফাংশন কী?

  4. C ভাষায় strcpy() ফাংশন কী?