Dùng hàm strstr trong C để tách chuỗi con có nhiều lần xuất hiện?

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…?

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

em hiểu r. Cảm ơn anh @ltd

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?