Làm cách nào để tách chuỗi bằng strtok() trong lập trình C?

Lam Cach Nao De Tach Chuoi Bang Strtok Trong Lap Trinh C



tách chuỗi quan trọng vì nhiều lý do như xử lý văn bản, phân tích dữ liệu hoặc phân tích cú pháp và ngôn ngữ lập trình C cung cấp nhiều cách để xử lý tác vụ này. Tuy nhiên, chức năng C phổ biến nhất cho phép tách chuỗi thành nhiều mã thông báo bằng một dấu phân cách được chỉ định là strtok() . Là một hàm thư viện, nó có sẵn trong thư viện C tiêu chuẩn hỗ trợ các thao tác chuỗi.

Hàm strtok() hoạt động như thế nào?

Để tách một chuỗi bằng cách sử dụng strtok() , trước tiên bạn cần hiểu nó hoạt động như thế nào. Các strtok() đọc ký tự chuỗi đầu vào theo từng ký tự cho đến khi bắt gặp dấu phân cách. Khi một dấu phân cách được tìm thấy, strtok() thay thế nó bằng một ký tự null '\ 0', chia chuỗi gốc thành hai phần một cách hiệu quả. Một con trỏ tới ký tự đầu tiên của chuỗi sau đó được hàm trả về. Các strtok() cú pháp của hàm là:

sải bước ( than * str , hằng số than * tôi chia sẻ ) ;

Các strtok() hàm nhận hai đối số- một con trỏ tới mã thông báo đầu tiên trong tập hợp mã thông báo và một chuỗi chứa các ký tự phân cách. Nó trả về một con trỏ tới mã thông báo tiếp theo, bắt đầu ngay sau dấu phân cách phân tách mã thông báo cuối cùng. Nó trả về NULL nếu không còn mã thông báo nào nữa.







Làm cách nào để tách chuỗi bằng Strtok() trong lập trình C?

Đây là một ví dụ về cách sử dụng strtok() để tách một chuỗi:



#include

#include

int chủ yếu ( ) {

than đầu vào [ ] = 'Linux,Gợi ý' ;

than * mã thông báo ;

mã thông báo = sải bước ( đầu vào , ',' ) ;

trong khi ( mã thông báo != VÔ GIÁ TRỊ ) {

bản inf ( '%S \N ' , mã thông báo ) ;

mã thông báo = sải bước ( VÔ GIÁ TRỊ , ',' ) ;

}

trở lại 0 ;

}

Trong ví dụ trên, đầu tiên chúng ta khai báo một con trỏ tới một char. Sau đó chúng tôi sử dụng strtok() để chia chuỗi đầu vào thành mã thông báo. Cuộc gọi đầu tiên của strtok() nhận hai đối số: chuỗi đầu vào và chuỗi dấu phân cách “,”. Mã thông báo đầu tiên, “Linux,” là mã thông báo strtok() trả về như một con trỏ tới . Sau đó, chúng tôi sử dụng vòng lặp while để lặp qua chuỗi đầu vào, sử dụng strtok() bằng con trỏ NULL để tiếp tục chia các token còn lại. Chuỗi dấu phân cách một lần nữa được chuyển thành đối số cho strtok() để chỉ ra các ký tự phân cách.



đầu ra





Hạn chế của hàm Strtok()

1: Sửa đổi chuỗi gốc

Các strtok() chức năng không trả về một bản sao của chuỗi; thay vào đó, nó sửa đổi chuỗi gốc. Do đó, nếu bạn cần có một phiên bản chưa sửa đổi của chuỗi sau khi tách nó, bạn nên tạo một bản sao của chuỗi gốc trước khi gọi strtok() .



2: Không đồng bộ

Một hạn chế đáng kể của strtok() là nó chỉ có thể được sử dụng trên một chuỗi tại một thời điểm. Nói cách khác, bạn không thể sử dụng nó để mã hóa đồng thời nhiều chuỗi.

3: Năng lực hạn chế

Một hạn chế tiềm năng khác là strtok() có khả năng hạn chế để xử lý các dấu phân cách lặp đi lặp lại. Ví dụ: nếu chuỗi của bạn có khoảng trắng liên tiếp giữa các từ, strtok() coi nó như một dấu phân cách duy nhất. Để xử lý những trường hợp như vậy, bạn sẽ phải sử dụng một cách tiếp cận khác.

Phần kết luận

Các strtok() Hàm là một hàm rất hữu ích để tách chuỗi trong lập trình C. Nó nhận một chuỗi đầu vào và một chuỗi dấu phân cách và trả về một con trỏ tới mã thông báo đầu tiên được tìm thấy trong chuỗi đầu vào. strtok() là phá hoại, do đó nếu bạn cần duy trì tính toàn vẹn của chuỗi gốc, bạn nên tạo một bản sao của chuỗi đó để thay thế. Bây giờ bạn đã biết cách thực hiện, bạn có thể cắt bất kỳ chuỗi nào thành các phần nhỏ hơn để xử lý.