30/09/2018, 17:23

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ó viết 19:33 ngày 30/09/2018

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)

Mai Anh Dũng viết 19:31 ngày 30/09/2018

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.

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)

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

Kevin Kma viết 19:34 ngày 30/09/2018

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

Bài liên quan
0