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

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


ฟังก์ชัน strtok() เป็นส่วนหนึ่งของไฟล์ส่วนหัว #include

ไวยากรณ์ของฟังก์ชัน strtok() มีดังต่อไปนี้ −

char* strtok(char* string, const char* limiter);

ป้อนสตริงสตริงและตัว จำกัด ตัวคั่น strtok() จะแบ่งสตริงออกเป็นโทเค็นตามอักขระที่คั่นด้วย

เราสามารถคาดหวังรายการสตริงจาก strtok() แต่ฟังก์ชันส่งคืนสตริงเดียวเพราะหลังจากเรียก strtok(input, limiter) ฟังก์ชันจะส่งคืนโทเค็นแรก

แต่เราต้องเรียกใช้ฟังก์ชันนี้ซ้ำแล้วซ้ำอีกในสตริงอินพุต NULL จนกว่าเราจะได้ NULL! โดยทั่วไป เราเคยเรียก strtok(NULL, delim) จนกว่าจะคืนค่าเป็น NULL

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C สำหรับฟังก์ชัน strtok()

#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!

สตริงอินพุตคือ "Hello Tutorials Point" และเรากำลังพยายามแปลงเป็นโทเค็นด้วยการเว้นวรรค

เราได้รับโทเค็นแรกโดยใช้ strtok(input, " ") เครื่องหมายอัญประกาศคู่เป็นตัวคั่นและเป็นสตริงอักขระตัวเดียว!

หลังจากนั้น เราได้รับโทเค็นต่อไปโดยใช้ strtok(NULL, " ") และวนซ้ำจนกว่าเราจะได้ NULL จาก strtok()