2012-04-27 52 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)); 
}