使用cctype库搜索函数,以查找某个范围内的数字字符数



在试图解决一位讲师给我的一个问题时,我很难理解如何正确地称呼它。

我得到了一个链接到测试驱动程序的函数,我的目标是使用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);});

最新更新