错误 - 下标值既不是数组也不是指针也不是向量

时间:2017-02-23 05:28:56

标签: c

我在使用函数反转字符串时遇到问题。这是我的代码:

#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 ++)'行中。

请帮我理解这个问题。

2 个答案:

答案 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)

问题是langchar变量,因此无法像lang[i]那样访问它。你打算把它作为数组或指针。