我的结构如下所示:
typedef struct {
unsigned long attr;
char fileName[128];
} entity;
然后我尝试分配一些值但收到一条错误消息...
int attribute = 100;
char* fileNameDir = "blabla....etc";
entity* aEntity;
aEntity->attr = attributes;
aEntity->fileName = fileNameDir;
编译器告诉我:
Error: #137: expression must be a modifiable lvalue aEntity->fileName = fileNameDir;
为什么我不能在这里将这个字符分配给结构中的字符?
谢谢
最佳答案
- 您将
char[]
(和char*
,FTM)视为字符串。哪个不是。您不能分配给数组,您必须复制值。此外,文件名的 128 长度似乎是任意的,并且可能是缓冲区溢出的潜在来源。使用std::string
有什么问题?这让你摆脱了所有这些问题。 - 你正在定义一个指向某个
实体
的指针,不要初始化它,然后使用它就好像它指向的随机地址是一个有效的实体
目的。 - 在 C++ 中不需要
typedef
struct
,因为与 C 不同,在 C++ 中struct
名称存在于相同的 namespace 中作为其他名称。
如果您绝对必须使用问题中定义的 struct
(它是预定义的),那么请查看其他答案并获得自己的 "The C Programming Language" 。否则,您可能需要使用此代码:
struct entity {
unsigned long attr;
std::string fileName;
};
entity aEntity;
aEntity.attr = 100;
aEntity.filename = "blabla....etc";
关于c - C中的结构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1265117/