char *strtok(char *str, const char *delim);
str
คือ string ที่ต้องการแบ่งเป็นหลายส่วน และ delim
คือ string ของตัวแบ่ง (delimiter) ที่จะใช้แบ่ง string จะเห็นว่า type ของ str
กำหนดเป็น char *
เนื่องจากฟังก์ชัน strtok
จะแก้ไข str
เปลี่ยน delim
ให้กลายเป็น null character เพื่อแบ่ง stringเมื่อมีการเรียกใช้งานฟังก์ชัน
strtok
แต่ละครั้ง ฟังก์ชันจะให้ string ที่แบ่งได้ 1 อัน โดยเริ่มจาก str
ที่กำหนด ถ้าไม่สามารถแบ่งได้แล้ว เช่น เจอ null character ซะก่อน ก็จะให้ค่าเป็น ์๊NULL ถ้าข้อความที่ต้องการจะแบ่ง ประกอบด้วย token หลายๆ อัน เราจะต้องเรียก strtok
หลายๆ ครั้ง แต่ครั้งที่สองเป็นต้นไป จะต้องกำหนดให้ str
เป็น NULL เพื่อให้ strtok แบ่งต่อจากครั้งก่อน มิฉะนั้นมันจะเริ่มตั้งแต่ต้นใหม่#include<stdio.h>
#include<string.h>
int main() {
char str[] = "5022771234,50,60,30";
char delim[] = ",";
char *token;
token = strtok(str, delim);
while(token != NULL) {
printf("Token: %s\n", token);
token = strtok(NULL, delim);
}
return 0;
}
จะได้ผลคือ
Token: 5022771234 Token: 50 Token: 60 Token: 30
ข้อควรระวัง
strtok
จะเปลี่ยนแปลง string ที่นำไปแบ่ง จนมีค่าไม่เหมือนเดิม เพราะตัวแบ่งจะถูกแทนที่ด้วย null character จนหมด ถ้าจำเป็นจะต้องเอา string นี้ไปใช้งานอื่นอีก ควรจะเก็บไว้เองก่อน
No comments:
Post a Comment