如何在C语言中检查字符串是否以.csv
结尾?
我已经尝试使用strlen
,但没有成功。
如何考虑:
char *dot = strrchr(str, '.');
if (dot && !strcmp(dot, ".csv"))
/* ... */
if(strlen(str) > 4 && !strcmp(str + strlen(str) - 4, ".csv"))
".csv"
不是以".csv"
结尾的吗? - undur_gongor.whatever
的文件被认为是没有扩展名的。因此,在他的使用情境中,这更加合理(在我看来)。 - ThiefMasterstrlen
可能是一个昂贵的操作,被调用了两次。 - Героям славаstrlen
不会很耗费时间,除非你在循环中对数百万个文件都这样做。 - ThiefMasterThiefMaster的代码最简单(也是最常用)的形式如下:
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));
}
strrchr
可以找到最右边的点号。 - undur_gongor.
,但文件名中没有。 - Daniel Stephens