У меня возникла проблема с обращением строки с помощью функции. Вот мой код:ошибка - индексированное значение не является ни массивом, ни указателем, ни вектором
#include<stdio.h>
int str_length(char lang);
int main()
{
char language[100];
int string_length;
while(1==scanf("%[^\n]", language))
{
string_length=str_length(language);
}
int i;
for(i=string_length; i>=0; i--)
{
printf("%c\n", language[i]);
}
return 0;
}
int str_length(char lang)
{
int i;
for(i=0; lang[i]!='\0'; i++)
{
i++;
}
return i;
}
ошибка, которая является такой же, как название показывает в строке 'для (я = 0; языки [я]! =' \ 0 '; я ++).
Пожалуйста, помогите мне разобраться в проблеме.
'language' объявлен как массив символов, но прототип/подпись для' str_length() 'говорит, что ожидает один символ. Возможно, вы имели в виду: 'str_length (char * lang);' <- отметить добавление '*' – user3629249
функции 'str_length()' имеет переменную 'i', которая увеличивается с помощью инструкции' for() 'AND с тело цикла 'for()', поэтому возвращаемое значение будет (приблизительно) в два раза больше фактической длины строки. предложите написать: 'for (i = 0; lang [i]; i ++);' Обратите внимание, что второй параметр является просто истинным (не равным нулю) или false (0), который является всем, что необходимо – user3629249
относительно: 'while (1 = = scanf ("% [^ \ n]", язык)) 'при использовании'% [^ \ n] 'всегда включает модификатор MAX CHARACTERS (который меньше длины входного буфера), чтобы гарантировать, что вход буфер не переполняется. Такое превышение приводит к неопределенному поведению и может/приведет к событию сбоя seg. Предложить: 'while (1 == scanf ("% 99 [^ \ n] ", язык))' – user3629249