计算c中的单个字符

counting individual characters in c

我正在做一个名为可读性的项目。用户输入文本,然后代码应使用 coleman-liau 函数来确定阅读级别。但是为了使用这个函数,你必须确定单词、字母和句子的数量。现在我正忙着数字母。所以我想问一下如何计算c中的单个字符。现在这是我的代码:

int count_letters (string text)
{
    int count_letters = 0;
    int numb = 0;
    for (int i = 0, n = strlen(text); i < n; i++)
    {
        if (text[i] != '')
        {
            count_letters++;
        }
    }
    return count_letters;
}

您可以使用 isalpha() 或“即兴创作”。

这将适用于 ASCII 字符集:

#include <stdio.h>

int count_letters(const char *str)
{
    int count = 0, i = 0;

    for (; str[i] != '[=10=]'; i++)
    {
        if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z'))
        {
            /* any character within this range is either a lower or upper case letter */
            count++;
        }
    }

    return count;
}

int main(void) 
{
    char *str = "Hello\n world hello123@";

    printf("%d\n", count_letters(str));

    return 0;
}

或使用isalpha(),也支持您当前的语言环境。

#include <ctype.h>

int count_letters(const char *str)
{
    int count = 0, i = 0;

    for (; str[i] != '[=11=]'; i++)
    {
        if (isalpha((unsigned char)str[i]))
        {
            count++;
        }
    }

    return count;
}

编辑:正如Andrew提到的,为了迂腐,你最好将unsigned char作为参数传递给isalpha()以避免任何由于签名类型而可能出现的未定义行为str.