ความหมาย
strspn() คำนวณความยาวของส่วนเริ่มต้น (initial segment) ของ string1 ที่ประกอบด้วยตัวอักษรที่อยู่ใน string2 เท่านั้น
Prototype
size_t strspn(const char *str1, const char *str2);
พารามิเตอร์
- str1 - string ที่ต้องการตรวจสอบ
- str2 - string ที่ chứaชุดตัวอักษรที่ยอมรับ (accept set)
คืนค่า
จำนวนตัวอักษรตั้งแต่ต้นของ str1 ที่อยู่ใน str2 ติดต่อกัน (หยุดเมื่อเจอตัวอักษรไม่อยู่ใน str2)
ตัวอย่างโปรแกรม
#include <stdio.h>
#include <string.h>
int main() {
char string1[20], string2[20];
int length;
printf("ป้อน string1: ");
fgets(string1, sizeof(string1), stdin);
string1[strcspn(string1, "\\n")] = '\\0';
printf("ป้อน string2 (ชุดตัวอักษรที่ยอมรับ): ");
fgets(string2, sizeof(string2), stdin);
string2[strcspn(string2, "\\n")] = '\\0';
length = strspn(string1, string2);
printf("จำนวนตัวอักษรที่ตรงกันตั้งแต่ต้น: %d\\n", length);
return 0;
}ผลลัพธ์ตัวอย่าง
ป้อน string1: Tutorials ป้อน string2: Tutorials Point จำนวนตัวอักษรที่ตรงกันตั้งแต่ต้น: 9
คำอธิบาย: "Tutorials" มี 9 ตัวอักษร ทุกตัวอยู่ใน "Tutorials Point" จึงคืนค่า 9
ตัวอย่างเพิ่มเติม
strspn("abc123", "abcdef"); // คืนค่า 3 ("abc" อยู่ใน set, "1" ไม่อยู่)
strspn("hello", "helo"); // คืนค่า 5 (ทุกตัวอยู่ใน set)
strspn("hello", "abc"); // คืนค่า 0 (ตัวแรก 'h' ไม่อยู่ใน set)ฟังก์ชันที่เกี่ยวข้อง
| ฟังก์ชัน | วัตถุประสงค์ |
|---|---|
| strspn | นับตัวอักษรตั้งแต่ต้นที่อยู่ใน set |
| strcspn | นับตัวอักษรตั้งแต่ต้นที่ไม่อยู่ใน set (complement) |
| strpbrk | หาตัวอักษรแรกที่อยู่ใน set |
การประยุกต์ใช้
- Validate input: ตรวจสอบว่า string ประกอบด้วยตัวอักษรที่อนุญาตเท่านั้น
- Parsing: หาตำแหน่งที่เริ่มมีตัวอักษรที่ไม่อนุญาต
- Tokenizing: แยก token ด้วยชุด delimiter
หมายเหตุ
- ต้อง include
<string.h> - คืนค่าเป็น size_t (unsigned integer)
- ไม่ modify string ต้นฉบับ