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);