【问题标题】:How can I check whether a string ends with ".csv" in C [duplicate]如何检查字符串是否以 C 中的“.csv”结尾 [重复]
【发布时间】:2012-04-27 08:55:21
【问题描述】:

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

我尝试过使用strlen,但没有成功。

【问题讨论】:

    标签: c string


    【解决方案1】:

    怎么样:

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

    【讨论】:

    • 然而,这不适用于字符串包含超过句点的情况(不太可能,但肯定可能)
    • @kappamaki:这很有效,因为strrchr 找到了最右边的点。
    • 这仍然行不通,因为您的路径中可能有 .,但文件名中没有
    • @DanielStephens 在这种情况下 .csv 不会是文件名的结尾,因此条件失败。
    【解决方案2】:
    if(strlen(str) > 4 && !strcmp(str + strlen(str) - 4, ".csv"))
    

    【讨论】:

    • 那么,".csv" 不以".csv" 结尾?
    • 通常文件.whatever 被认为具有名称.whatever 并且没有扩展名。因此,对于他的用例,这更有意义 IMO。
    • ...同意(假设我们正在讨论文件名)。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 2011-06-06
      相关资源
      最近更新 更多