2010-07-15 33 views
7

Trong c nếu tôi muốn tìm kiếm một chuỗi cho một nhân vật đặc biệt tôi chỉ có thể làm như sauCó phiên bản nhiều ký tự strchr() trong thư viện C chuẩn không?

char *p; 
p = (char *)strchr(buffer,'('); 
if(p){ 
    .... 

nhưng những gì nếu tôi muốn tìm kiếm nhiều hơn một ký tự (hoặc một dải ký tự) ví dụ như "bất kỳ chữ số ". Tôi biết tôi có thể làm một cái gì đó giống như

char *p=0; 
char *i; 
for(i=buffer;*i!='\0';i++){ 
    if(*i >= '0' && *i <=9){ 
     p=i; 
    } 
} 

if(p){ 
    ... 

giả định một chuỗi, vv chấm dứt đúng Nhưng có một thư viện chức năng tiêu chuẩn mà đã cung cấp chức năng này (hy vọng một cách an toàn hơn)

Trả lời

18

gì về strpbrk? Nghe có vẻ như nó phù hợp với hóa đơn của bạn.

const char * strpbrk (const char * str1, const char * str2); 

"Trả về con trỏ đến lần xuất hiện đầu tiên trong str1 của bất kỳ ký tự nào là một phần của str2 hoặc con trỏ rỗng nếu không có kết quả phù hợp."

CHỈNH SỬA: Liên kết đến một trang web C++, nhưng strpbrk là một phần của thư viện C chuẩn.

+0

Cảm ơn. Tôi nghĩ đó chỉ là những gì tôi cần. – Vagnerr

+0

+ 1- câu trả lời xuất sắc. Hoàn toàn phù hợp với hóa đơn và trong giới hạn của OP. –

Các vấn đề liên quan