簡體   English   中英

錯誤-下標值既不是數組也不是指針也不是向量

[英]error - subscripted value is neither array nor pointer nor vector

我在使用函數反轉字符串時遇到問題。 這是我的代碼:

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

請幫助我理解問題。

您的函數str_length()期望使用char作為參數,但是您在調用中將其傳遞給char * (指向字符串的指針)。 因此,必須在函數參數中使用指針符號或數組。 喜歡

int str_length(char lang[])
{
   //code
}

要么

int str_length(char *lang)
{
    //code
}

您需要將函數定義更改為

int str_length(char lang)
...

int str_length(char *lang)

問題是langchar變量,因此無法像lang[i]一樣進行訪問。 您打算將其作為數組或指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM