Строковая переменная ERROR получает 0x603270 помимо значения alphabeti c - PullRequest
0 голосов
/ 14 июля 2020

Когда я набираю текст, например: «Быстрая коричневая лиса.», В качестве входных данных отладчик показывает значение из переменной текста: 0x603270 «Быстрая коричневая лиса», а типом является строка.

Из-за этого при запуске for l oop оператор if ISALPHA получает эту ошибку: «Процесс получил SIGSEGV: ошибка сегментации».

код:

#include <stdio.h>
#include <cs50.h>
#include <ctype.h>

int main (void)
{
    // ask the user input
    string text = get_string("Text: ");

    // take the text and count how many letters there is (uppercase and lower case)
    for (int i = 0; ;i++)
    {
        if(isalpha(text))
        {
            i++;
            return 0;
        }
        else if(isspace(text))
        {
            return 1;
        }
    }

кто-нибудь может мне помочь? почему он показывает 0x603270? перед правильным вводом?

1 Ответ

0 голосов
/ 14 июля 2020

Программа вылетает на

isalpha(test)

Потому что вы объявили

string text

в параметре есть указатель типа string. Но isalpha принимает только параметр int, поэтому просто запишите его как

isalpha(text[i])

То же самое для isspace.

...