gpt4 book ai didi

c - C中的结构问题

转载 作者:行者123 更新时间:2023-12-02 05:21:24 24 4
gpt4 key购买 nike

我的结构如下所示:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com