我在使用函数反转字符串时遇到问题。这是我的代码:
#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;
}
与标题相同的错误显示在'for(i = 0; lang [i]!='\ 0'; i ++)'行中。
请帮我理解这个问题。
答案 0 :(得分:2)
您的函数str_length()
期望char
作为参数,但您在调用中传递char *
(指向字符串的指针)。所以,你必须在函数参数中使用指针表示法或数组。像
int str_length(char lang[])
{
//code
}
或
int str_length(char *lang)
{
//code
}
答案 1 :(得分:0)
您需要将功能定义更改为
int str_length(char lang)
...
到
int str_length(char *lang)
问题是lang
是char
变量,因此无法像lang[i]
那样访问它。你打算把它作为数组或指针。