Как мне посчитать количество букв в этой программе - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь посчитать количество букв в пользовательском вводе, однако, я получаю ошибку сегментации. Может ли кто-нибудь сказать мне, как исправить эту проблему. Спасибо!


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

    int count_letters(int length, string array[]);

    int main(void)
    {
        string Text = get_string("Text:");
        int len = strlen(Text);
        printf("%i letter(s)\n", count_letters(len, &Text));
    }

    int count_letters(int length, string array[])
    {
        int letters = 0;
        for(int i = 0; i < length ; i++)
        {
             if (isalpha(array[i]))
             {
                 letters++;
             }
        }
        return letters;
    }

1 Ответ

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

Как и в int count_letters(int length, string array[]), параметр array уже [указатель на] массив символов, [] неверен.

Если вы измените это на int count_letters(int length, string array) и вызовете его из main как count_letters(len, Text) программа будет запущена.

Обратите внимание, что cs50.h уже объявляет string как char *.

(И я искренне согласен с Кристианом Гиббинс, этот тип данных string должен быть удален из cs50.h)

...