计算字符在c编程中出现在字符串中的次数?

时间:2017-09-06 22:27:21

标签: c char c-strings

下面的for循环一直持续到字符串结束,而if分支检查字符'u'出现在字符串中的次数,“yuzuf Oztuk”,这是3次。同时,变量count计算字符串中u的数量。当我编译代码时,我在字符串中出现的次数为15,这是错误的。

int numTimesAppears(char* mystring, char ch)
{
    int i;
    int count;
    for(i = 0; mystring[i] != '\0' ; ++i)
    {
        if (mystring[i] == ch)
        {
            count++;
        }
    }
    return count;
}

1 个答案:

答案 0 :(得分:2)

  

我在字符串中出现的次数是15,这是错误的。

  1. 关键问题:代码需要初始化count的值。 @BLUEPIXY

    // int count;
    int count = 0;
    
  2. 转角案例:由于空字符在字符串中,因此对于任何{{1},预期字符出现在字符串中的结果为1“ }。 numTimesAppears(some_string, '\0')循环修复了这个问题。类似的标准库函数是do,它查找第一个匹配并考虑可搜索的字符串 null字符部分:“...终止null字符被认为是字符串的一部分。“与所有极端情况一样,可以推断出各种结果 - 在这种情况下最好记录编码目标。

    strchr()
  3. 由于该函数不修改被检查的字符串,因此使其i = 0; do { if (mystring[i] == ch) { count++; } } while (mystring[i++]); 增加了函数的适用性和性能。 @Vlad from Moscow

  4. 数组索引最好使用const而不是size_tint可能过于狭窄。

    int