ฟังก์ชัน strtok() เป็นส่วนหนึ่งของไฟล์ส่วนหัว
ไวยากรณ์ของฟังก์ชัน 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()