实施isalpha时遇到困难

我一直在研究CS50的可读性问题。第一步是创建一种只计算字母字符的方法。它建议在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");
}

解决方案:

#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;
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

我在ASP.NET上使用C#在基于Web的项目上工作,我遇到了兼容错误。

2022-9-8 14:18:17

未分类

正则表达式取词

2022-9-8 14:18:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索