คำอธิบายปัญหา
สมมติว่าเรามีสตริง s ที่เป็นประโยคประกอบด้วยหลายคำ เราต้องพิมพ์แต่ละคำในบรรทัดใหม่ สามารถใช้ฟังก์ชัน strtok() จากไลบรารี string.h ฟังก์ชันนี้รับสตริงและตัวคั่น (delimiter) ซึ่งในที่นี้คือช่องว่าง " "
ตัวอย่าง
หากอินพุตเป็น s = "Let us see some string tokenizing fun" ผลลัพธ์จะเป็น:
Let us see some string tokenizing fun
ขั้นตอนการแก้ปัญหา
- เรียก strtok(s, " ") เพื่อดึงโทเคนแรก
- วนลูป while โทเคนไม่เป็น NULL:
- พิมพ์โทเคน
- เรียก strtok(NULL, " ") เพื่อดึงโทเคนถัดไป
โค้ดตัวอย่าง
#include <stdio.h>
#include <string.h>
int main() {
char s[] = "Let us see some string tokenizing fun";
char* token = strtok(s, " ");
while (token) {
printf("%s\n", token);
token = strtok(NULL, " ");
}
return 0;
}
อินพุต
Let us see some string tokenizing fun
เอาต์พุต
Let us see some string tokenizing fun