C - 计算字符串数组中的字符数

时间:2016-02-06 23:33:12

标签: c arrays string

我一直在一个程序中工作,以完成Project Euler的问题17,我试图在C中完成。 问题:

  

如果数字1到5用文字写出:一,二,三,四,五,那么总共有3 + 3 + 5 + 4 + 4 = 19个字母。

     

如果所有1到1000(一千)的数字都用文字写出来,会用多少个字母?

我编写了一个函数,它将所有数字放在1到1000之间的单词中,并放入一个包含1001个元素的数组中(最后一个为迭代时为NULL)。 但是当我尝试计算字符串中每个元素的字符数时,我遇到了麻烦,因为我不知道该怎么做。有人可以给我一些帮助吗?

2 个答案:

答案 0 :(得分:5)

你可以这样做:

int char_count = 0;

char **p = array;

while (*p) {
    char_count += strlen(*p);
    ++p;
}

请注意,strlen()也会计算空格。

如果您不想要空格或特殊字符,您可以编写自己的长度函数,例如:

int string_length (const char *str) {
    int len = 0;

    while(*str) {
        /* Count only lower-case letters a-z. */
        if (*str >= 'a' && *str <= 'z') ++len;
        ++str;
    }

    return len;
}

答案 1 :(得分:2)

假设您的数组被称为array ...

int count = 0, i;

for (i = 1; i <= 1000; ++i) {
    count += strlen(array[i]);
}