Мой код не печатает номера букв в данном тексте. Почему? - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь создать функцию, показанную ниже, которая бы подсчитывала количество букв во введенном тексте и выдавала целочисленное значение. Мой код ниже компилируется, но он не распечатывает результат. Я что-то упустил?

// Libraries
#include <cs50.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <ctype.h>

int count_letter(string text)
{
    int lettercount;
    int number_of_letters;

    number_of_letters = strlen(text);

    for(lettercount = 0; lettercount < number_of_letters;)
        if (isalpha(number_of_letters))
            lettercount++;

    return lettercount;
}

int main(void)
{
    string text = get_string("text: ");
    {
        printf("%i letter(s)", count_letter(text));
        printf("\n");
    }
}

1 Ответ

0 голосов
/ 30 марта 2020

Поскольку number_of_letters - это int, как вы думаете, isalpha(number_of_letters) оценивает? Не говоря уже о том, что в функции l oop или if в функции нет фигурных скобок {}, которые затрудняют чтение кода и могут привести к результатам, которых вы не ожидаете.

Для ясности, этот тест if (isalpha(number_of_letters)) не верен. Так как программа хочет подсчитать количество символов в text, которые являются альфа, тест будет выглядеть примерно так: if (isalpha(text[lettercount])).

...