2012-04-27 23 views

Trả lời

34

Làm thế nào về:

char *dot = strrchr(str, '.'); 
if (dot && !strcmp(dot, ".csv")) 
    /* ... */ 
+0

'str' là chuỗi –

+2

, tuy nhiên, sẽ không hoạt động đối với trường hợp chuỗi chứa nhiều hơn dấu chấm (không có khả năng, nhưng chắc chắn có thể) – kappamaki

+16

@kappamaki: Điều này hoạt động vì' strrchr' tìm đúng nhất chấm. –

25
if(strlen(str) > 4 && !strcmp(str + strlen(str) - 4, ".csv")) 
+0

Tuyệt vời awesomeness :-) – cnicutar

+1

Vì vậy, '" .csv "' không kết thúc bằng '" .csv "'? –

+2

Thông thường một tệp '.whatever' được coi là có tên' .whatever' và không có phần mở rộng. Vì vậy, đối với trường hợp sử dụng của mình, điều này làm cho IMO có ý nghĩa hơn. – ThiefMaster

4

hình thức đơn giản (và tổng quát nhất) của mã ThiefMaster của sẽ là:

int string_ends_with(const char * str, const char * suffix) 
{ 
    int str_len = strlen(str); 
    int suffix_len = strlen(suffix); 

    return 
    (str_len >= suffix_len) && 
    (0 == strcmp(str + (str_len-suffix_len), suffix)); 
} 
Các vấn đề liên quan