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

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


ฟังก์ชันนี้คล้ายกับฟังก์ชัน strtok() ข้อแตกต่างที่สำคัญเพียงอย่างเดียวคือ _r ซึ่งเรียกว่าเป็นฟังก์ชัน re-entrant

ฟังก์ชัน re-entrant เป็นฟังก์ชันที่สามารถถูกขัดจังหวะระหว่างการดำเนินการได้ ฟังก์ชันประเภทนี้สามารถใช้เพื่อดำเนินการต่อได้

ด้วยเหตุนี้ ฟังก์ชัน re-entrant จึงปลอดภัยต่อเธรด หมายความว่าสามารถถูกขัดจังหวะด้วยเธรดได้อย่างปลอดภัยโดยไม่มีอันตราย

ฟังก์ชัน 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; // 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_r(NULL, " ", &context);
   }
   // 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