Hàm strspn() tính độ dài đoạn đầu chuỗi str1 chỉ chứa các ký tự có trong chuỗi str2. Dừng tại ký tự đầu tiên không nằm trong str2. Khai báo trong <string.h>.
Cú pháp
size_t strspn(const char *str1, const char *str2);
Ví dụ
#include <stdio.h>
#include <string.h>
int main() {
const char s1[] = "Helloworld!";
const char s2[] = "Hello";
size_t len = strspn(s1, s2);
printf("Do dai doan dau chi chua ky tu cua s2: %zu\n", len); // 5
return 0;
}
Kết quả
Do dai doan dau chi chua ky tu cua s2: 5
Giải thích: s2 = "Hello" chứa {H,e,l,o}. Duyệt s1: H(0) e(1) l(2) l(3) o(4) -> đều trong s2. Ký tự tiếp theo 'w' (index 5) không trong s2 -> dừng. Trả về 5.
strspn vs strcspn
| Hàm | Tính | Dừng khi |
|---|---|---|
| strspn | Độ dài prefix CHỈ chứa chars trong str2 | Gặp char KHÔNG trong str2 |
| strcspn | Độ dài prefix KHÔNG chứa chars trong str2 | Gặp char CÓ trong str2 |
Mối quan hệ: strspn(s1, s2) + strcspn(s1 + strspn(s1, s2), s2) == strlen(s1) (nếu s2 không rỗng).