Проблема реализации isalpha - PullRequest
0 голосов
/ 24 апреля 2020

Я работал над проблемой читабельности в 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 Ответ

1 голос
/ 24 апреля 2020
#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;
}
...