I have:
char message1[100];
char message2[100];
当我尝试做的时候message1 = message2
,我收到错误:
分配给类型时不兼容的类型‘char[100]’
从类型‘char *’
我有类似的功能
if(send(clntSocket, echoBuffer, recvMsgSize, 0) != recvMsgSize){
DieWithError("send() failed")
}
其间。这些会不会把事情弄乱? :(
我有一种感觉也许你做不到=
在字符数组或其他东西上,但我环顾四周,找不到任何东西。
You 无法将任何内容分配给 C 中的数组变量 http://c-faq.com/aryptr/arraylval.html。它不是“可修改的左值”。从规格来看,§6.3.2.1 左值、数组和函数指示符:
An lvalue是一个具有对象类型或不完整类型的表达式void
;如果左值在求值时未指定对象,则行为未定义。当一个对象被认为具有特定类型时,该类型由用于指定该对象的左值指定。 A可修改的左值是一个左值,不具有数组类型,不具有不完整类型,不具有 const 限定类型,并且如果它是结构或联合,则不具有任何成员(递归地包括所有包含的聚合或联合)具有 const 限定类型。
您收到的错误消息有点令人困惑,因为表达式右侧的数组在赋值之前衰减为指针。你所拥有的在语义上等同于:
message1 = &message2[0];
这给出了右侧类型char *
,但由于您仍然无法将任何内容分配给message1
(这是一个数组,输入char[100]
),您会收到所看到的编译器错误。您可以使用以下方法解决您的问题memcpy(3) http://linux.die.net/man/3/memcpy:
memcpy(message1, message2, sizeof message2);
如果你真的想使用=
出于某种原因,您可以在结构内部使用数组...但这并不是真正推荐的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)