Em có 1 chuỗi kí tự rất lớn, “XX1…XX2…XX3…XX4…XX5”. em muốn cắt nó thành các chuỗi con: “XX2…XX5”, “XX3…XX5”, “XX4…XX5”. Em nghĩ đến hàm strstr(str,“XX”) để tìm vị trí và copy nó sang 1 biến khác. Nhưng hàm này chỉ tìm đc “XX” đầu tiên. (xx1,xx2,xx3,xx4,xx5 là giống nhau)
Vậy em phải làm sao để tìm được “XX” thứ 2, thứ3…?
Dùng hàm strstr trong C để tách chuỗi con có nhiều lần xuất hiện?
Giả sử vị trí tìm dc là x thì bạn chỉ cần dùng vòng lặp tìm tiếp bằng hàm strstr(str+ x +1,patt)
3 Likes
Hàm strstr(str,"XX")
trả về một con trỏ, trỏ về vị trí đầu tiên nó tìm thấy “XX” trong str
.
Thêm code cho câu trả lời của @Gio
#include <stdio.h>
#include <string.h>
int main()
{
const char input[] = "XX1..XX2.....XX3...........XX4..XX5";
char *result = 0;
result = strstr(input+1,"XX");
while(result)
{
printf("%s \n", result);
int i = result - input;
result = strstr(input+i+1,"XX");
}
return 0;
}
Output sẽ là
XX2…XX3…XX4…XX5
XX3…XX4…XX5
XX4…XX5
XX5
4 Likes