双指针将 char 数组值分配给 char 数组,结构使用 char 指针
Posted
技术标签:
【中文标题】双指针将 char 数组值分配给 char 数组,结构使用 char 指针【英文标题】:Double pointer assigning char array value to char array, of structure using char pointer 【发布时间】:2015-10-26 16:49:20 【问题描述】:我有这个函数,我试图将值分配给结构的成员。
void Add(NodeDef **Head, char *Data)
ptrHead=(struct Node **)malloc(sizeof(struct Node));
(*Head)->Data=*(Data);
(*Head)->NextNode=NULL;
我这样称呼这个函数
for (i = 0; i < 5; i++)
AddToLinkedList( &Head, iData[i].name);
iData
是一个将数据存储为字符串 (char iData[50]
) 的结构的成员。
现在我收到类似
的错误error: assignment to expression with array type
(*Head)->Data=*(Data);
【问题讨论】:
请see why not to castmalloc()
和C
中的family返回值。
你能出示iData[]
的声明吗?我的猜测是您想将iData[i].name
中的字符串复制到(*Head)->Data
,但这不是您复制字符串的方式。
可以用什么替代malloc()
?
【参考方案1】:
错误消息结构成员Data
((*Head)->Data=*(Data);
中的类型为数组,您正在为其分配一个字符值。
既然你传递了name,那么你最想使用的是strcpy()
那里:
strcpy((*Head)->Data, Data);
或者如果你只想存储一个字符,那么你需要将结构中Data
的类型从char[N]
更改为char
。
另外,请参阅what's wrong with casting malloc's return value?
【讨论】:
以上是关于双指针将 char 数组值分配给 char 数组,结构使用 char 指针的主要内容,如果未能解决你的问题,请参考以下文章