Функция get_string
возвращает указатель на введенную строку. Вы не можете инициализировать массив символов указателем. Поэтому напишите либо
char *text = get_string("Text: ");
, либо, насколько я знаю
string text = get_string("Text: ");
Обратите внимание, что это утверждение
letters = letters + 0;
не имеет большого смысла. )
и символ ';' после закрывающей скобки является лишним. Он вводит пустой оператор, который не имеет никакого эффекта.
Оператор if
if (text[length] == " " ||text[length] == "." ||text[length] == "!" ||text[length] == "?")
{
letters = letters + 0;
}
else {
letters++;
};
может быть переписан как
if ( text[letter] != ' && text[letter] != '.' && text[letter] != '!' && text[letter] != '?')
{
letters++;
};
Используйте символьные литералы вместо строковых литералов. Например, вместо
text[letter] == " "
или
text[letter] != " "
используйте
text[letter] == ' '
или
text[letter] != '
В противном случае вы пытаетесь сравнивайте символ с указателем, который не имеет смысла.
И вместо переменной длины, используемой в качестве индекса, вы должны использовать переменную букву. Хотя введение переменной буквы излишне. Вы можете использовать переменную длину вместо буквы переменной, имя которой только сбивает с толку читателя кода.