strtok_r() là phiên bản re-entrant (có thể ngắt quãng an toàn) của strtok(). Khác biệt: có tham số thêm context (con trỏ con trỏ) để lưu trạng thái phân tích, cho phép an toàn với đa luồng (thread-safe).
Cú pháp
#include <string.h> char *strtok_r(char *string, const char *limiter, char **context);
Ví dụ
#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;
}
Kết quả
Token List: Hello Tutorials Point