C-错误:从';char';至';字符*';[-fpermissive]

C-错误:从';char';至';字符*';[-fpermissive],c,C,首先,抱歉英语不好 当我使用这个过程并编译它时,它得到一个消息: 错误:从“char”到“char*”的转换无效[-fpermissive] 这个错误到底是什么意思?这是我的程序 void AddElement(TabCharName*T, char X[20]) { if((*T).neff < 700) { (*T).neff++; (*T).name[(*T).neff]=X; } } 对于数据类型 typedef struc

首先,抱歉英语不好
当我使用这个过程并编译它时,它得到一个消息: 错误:从“char”到“char*”的转换无效[-fpermissive]

这个错误到底是什么意思?

这是我的程序

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

typedef struct
{
    char name[20];
    int neff;
} TabCharName;
错误是在线的

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

scanf("%s", &X);

请记住,数组已经是指针,在函数addElement中,行:

(*T).name[(*T).neff]=X;
应替换为

strcpy((*T).name[(*T).neff], X);
假设您的结构有一个成员“char**name”


另外,建议尝试使用foo->bar而不是(*foo).bar,因为这样更容易理解。

错误发生在哪一行?(还有比较
X!=“a”
不符合您的要求。)
TabCharName
name
的数据类型是什么?如果不仔细查看代码,错误基本上是说您试图将
char
用作
char
指针,反之亦然。看看你的指针逻辑吧?这还不是一个好主意!我不太理解@roelofs的逻辑,假设您的结构有一个成员“char**name”,假设您将复制字符串“nowhere”。我必须先声明strcpy吗?
(*T).name[(*T).neff]=X;
strcpy((*T).name[(*T).neff], X);