下面的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;
}
答案 0 :(得分:2)
我在字符串中出现的次数是15,这是错误的。
关键问题:代码需要初始化count
的值。 @BLUEPIXY
// int count;
int count = 0;
转角案例:由于空字符在字符串中,因此对于任何{{1},预期字符出现在字符串中的结果为1“ }。 numTimesAppears(some_string, '\0')
循环修复了这个问题。类似的标准库函数是do
,它查找第一个匹配并考虑可搜索的字符串的 null字符部分:“...终止null字符被认为是字符串的一部分。“与所有极端情况一样,可以推断出各种结果 - 在这种情况下最好记录编码目标。
strchr()
由于该函数不修改被检查的字符串,因此使其i = 0;
do {
if (mystring[i] == ch) {
count++;
}
} while (mystring[i++]);
增加了函数的适用性和性能。 @Vlad from Moscow
数组索引最好使用const
而不是size_t
。 int
可能过于狭窄。
int