Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ฟังก์ชัน strtok_r() ในภาษา C คืออะไร


คำอธิบาย

strtok_r() คล้ายกับ strtok() แต่วอร์ชัน Re-entrant (ปลอดภัยต่อเธรด) มีพารามิเตอร์เพิ่มเติมคือ context pointer เพื่อเก็บสถานะการแยกโทเคน ทำให้สามารถใช้งานพร้อมกันได้หลายเธรด

Syntax

#include <string.h>
char *strtok_r(char *string, const char *limiter, char **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);
        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

ความแตกต่าง strtok() vs strtok_r()

  • strtok(): ใช้ Static buffer ภายใน ไม่ Thread-safe
  • strtok_r(): ใช้ Context pointer จากภายนอก Thread-safe