实施isalpha时遇到问题

时间:2020-04-24 02:07:57

标签: c cs50 isalpha

我一直在研究CS50中的可读性问题。第一步是创建一种仅计算字母字符的方法。它建议使用isalpha函数,但实际上并未包括如何实现的说明。

下面是我的代码,该代码成功计算了全部字母字符,但未能过滤出标点符号,空格和整数。

有人能指出我一个更好的方向来实施isalpha使其起作用吗?

#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h> 

int main(void)
{
    string s = get_string ("Text: \n");     // Ask for text

// Loop through the string one character at a time. Count strlen in variable n.
    for (int i = 0, n = strlen(s); i < 1; i++) 

// Count only the alphabetical chars.
    {
        while (isalpha (n)) i++;
        printf ("%i", n );
    }

    printf("\n");
}

1 个答案:

答案 0 :(得分:1)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main(void)
{
    const char* s = get_string ("Text: \n");
    int count = 0;

    while(*s) count += !!isalpha(*s++);

    printf ("%d\n", count );
    return 0;
}