C - 错误:从'char'到'char *'的无效转换[-fpermissive]

时间:2017-11-21 04:34:03

标签: c

首先,抱歉英语不好 当我使用程序并编译它时,它得到了消息:

  

错误:无效转换为'char'到'char *'[-fpermissive]

该错误究竟是什么意思?

这是我的程序

void AddElement(TabCharName*T, char X[20])
{
    if((*T).neff < 700)
    {
        (*T).neff++;
        (*T).name[(*T).neff]=X;
    }
}

这是主要的

int main()
{
    //Declare
    TabCharName MyTab;
    char X[20];

    //Algorithm
    createNameColl(&MyTab);
    printf("Insert Name: ");
    scanf("%s", &X);
    while(X != "a")
    {
        AddElement(&MyTab, X);
        printf("\nInsert Name: ");
        scanf("%s", &X);
    }

表示数据类型

typedef struct
{
    char name[20];
    int neff;
} TabCharName;

并且错误在线

(*T).name[(*T).neff]=X;

1 个答案:

答案 0 :(得分:1)

变化:

scanf("%s", &X);

scanf("%s", X);

记住一个数组已经是一个指针,而在addElement函数中就是一行:

(*T).name[(*T).neff]=X;

应替换为

strcpy((*T).name[(*T).neff], X);

假设你的结构有一个成员&#34; char ** name&#34;

另外作为建议尝试使用foo-&gt; bar而不是(* foo).bar,因为更容易理解。