如何检查字符串是否以C中的".csv"结尾

ahm*_*met 9 c string

如何检查字符串是否以".csv"结尾 C

我尝试过strlen没有任何成功

cni*_*tar 47

怎么样:

char *dot = strrchr(str, '.');
if (dot && !strcmp(dot, ".csv"))
    /* ... */
Run Code Online (Sandbox Code Playgroud)

  • @kappamaki:这是有效的,因为`strrchr`找到了最右边的点. (21认同)
  • 但是,对于字符串包含超过句点的情况(不太可能,但肯定可能),这将不起作用 (3认同)
  • @DanielStephens 在这种情况下 .csv 将不是文件名的结尾,因此条件失败。 (2认同)

Thi*_*ter 26

if(strlen(str) > 4 && !strcmp(str + strlen(str) - 4, ".csv"))
Run Code Online (Sandbox Code Playgroud)

  • 通常文件`.whatever`被认为具有名称`.whatever`而没有扩展名.因此,对于他的用例,这更有意义IMO. (4认同)
  • 那么,“.csv”不以“.csv”结尾? (2认同)

Mik*_*keW 7

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));
}
Run Code Online (Sandbox Code Playgroud)