实施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;
}

本文来自投稿,不代表实战宝典立场,如若转载,请注明出处:https://www.shizhanbaodian.com/1958.html

(0)
上一篇 2022年5月29日 下午8:51
下一篇 2022年5月29日 下午8:51

相关推荐

发表评论

登录后才能评论