在试图解决一位讲师给我的一个问题时,我很难理解如何正确地称呼它。
我得到了一个链接到测试驱动程序的函数,我的目标是使用cstring库在使用该函数随机生成的字符串对象中查找0-9范围内的任何数字。
int countDigits(char * const line) {return 0;}
到目前为止,这就是我所拥有的:
int countDigits(char * const line)
{
int i, index;
index = -1;
found = false;
i = 0;
while (i < *line && !found)
{
if (*line > 0 && *line < 9)
index++;
}
return 0;
}
我的代码不太好,目前只会导致无限循环和失败,任何帮助都将不胜感激。
好吧,您的函数有几个问题。
- 您希望它返回位数,但在任何情况下都会返回0
found
从不设置为false以外的任何值,因此禁止while循环停止- 此外,比较
i<*line
对我来说没有多大意义,我想你想检查一下行的末尾。也许您想查找一个空终止"\0"(此处i
从未设置为0以外的任何值) - 并且,如果要比较单个字符,则应查找要比较的字符的ASCII代码(数字0-9不等于代码0-9)
希望这是一个改善你机能的开始。
有一个现成的方法,叫做count_if:-
count_if(begin, end, [](char c){ return isdigit(c);});