2012-04-27 53 views
6

一個字符串是否有名爲「.csv」結尾如何檢查在C如何檢查用C

一個字符串是否有名爲「.csv」結尾我使用strlen沒有任何成功嘗試

回答

34

如何:

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

'str'作爲字符串 – 2012-04-27 08:59:59

+2

但是,對於字符串包含多於句點(不太可能,但肯定可行)的情況,這不起作用 – kappamaki 2012-04-27 09:07:11

+16

@kappamaki:這是可行的,因爲'strrchr'找到最右邊的點。 – 2012-04-27 09:10:08

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

Pure awesomeness :-) – cnicutar 2012-04-27 09:01:31

+1

那麼,'「.csv」'不會以'「.csv」'結尾? – 2012-04-27 09:12:33

+2

通常文件'.whatever'被認爲具有'.whatever'這個名字並且沒有擴展名。所以對於他的使用情況來說,這更有意義IMO。 – ThiefMaster 2012-04-27 09:29:48

4

的ThiefMaster的代碼最簡單的(和最常用的)形式是:

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)); 
}