如何计算C字符串中字符'/'的出现次数?

时间:2012-06-17 19:40:31

标签: c string

如何计算/的C字符串中出现的次数?

我可以这样做:

int countSlash(char str[])
{
    int count = 0, k = 0;
    while (str[k] != '\0')
    {
          if (str[k] == '/')
              count++;
          k++;
    }
    return count;
}

但这不是一种优雅的方式;关于如何改进它的任何建议?

4 个答案:

答案 0 :(得分:5)

strchr会形成一个较小的循环:

ptr = str;

while ((ptr = strchr(ptr '/')) != NULL)
    count++, ptr++;

我应该补充一点,为了简洁起见,我并不支持简洁,而且我总是会选择最清晰的表达式,所有其他条件都相同。我确实发现strchr循环更多优雅,但问题中的原始实现是明确的并且存在于函数内部,所以我不喜欢一个优于另一个,只要它们都通过单元测试。

答案 1 :(得分:2)

你的就够了。也许,这对某些人来说看起来更漂亮:

int countSlash(char * str)
{
    int count = 0;
    for (; *str != 0; ++str)
    {
        if (*str == '/')
            count++;
    }
    return count;
}

答案 2 :(得分:2)

通用界面,明显的方法,适当的类型和纯粹的习惯用语:

size_t str_count_char(const char *s, int c)
{
    size_t count = 0;

    while (s && *s)
         if (*s++ == c)
             ++count;

    return count;
}
Oli Charlesworth可能会对同一行的任务和条件提出疑虑,但我认为它隐藏得很好; - )

答案 3 :(得分:0)

这也有效:

int count=0;
char *s=str;
while (*s) count += (*s++ == '/');