如何计算 C 字符串中出现的次数/
?
我可以做这个:
int countSlash(char str[])
{
int count = 0, k = 0;
while (str[k] != '\0')
{
if (str[k] == '/')
count++;
k++;
}
return count;
}
但这不是一种优雅的方式;关于如何改进它的任何建议?
strchr
会做一个更小的循环:
ptr = str;
while ((ptr = strchr(ptr '/')) != NULL)
count++, ptr++;
我应该补充一点,我不会为了简洁而赞同简洁,我将始终选择最清晰的表达方式,所有其他条件都相同。我确实发现strchr
循环更优雅,但问题中的原始实现很清楚并且存在于一个函数中,所以我不喜欢另一个,只要它们都通过单元测试。
你的已经足够好了。也许,这对某些人来说看起来更漂亮:
int countSlash(char * str)
{
int count = 0;
for (; *str != 0; ++str)
{
if (*str == '/')
count++;
}
return count;
}
通用接口、明显的方法、适当的类型和纯粹的惯用表达方式:
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 可能会引起对同一行的作业和条件的担忧,但我认为它隐藏得相当好;-)
这也将起作用:
int count=0;
char *s=str;
while (*s) count += (*s++ == '/');