【问题标题】:Accessing a member of a structure in an array of structures which is a member of an array of different structures访问结构数组中结构的成员,该成员是不同结构数组的成员
【发布时间】:2017-06-11 03:14:17
【问题描述】:

我有一个名为 Object 的结构定义为:

    struct Object
    {
        char name[20];
        char description[50];
    };

我还有另一个名为 Room 的结构定义为:

    struct Room
    {
        int number;
        char description[50];
        struct Object objects[10];
    };

然后我初始化一个 Room 数组并尝试更改房间中对象的名称:

    void main()
    {
        struct Room rooms[1][1];
        rooms[0][0].objects[0].name = "Cabinet";
    }

我遇到的问题是 Visual Studio 给了我这些错误:

    rooms[0][0].objects[0].name = "cabinet";

    Error1:
        expression must be a modifiable lvalue

    Error2:
        '=': left operand must be l-value

我正在使用 Visual Studio 2015 社区版的 C++ 编译器来编译和运行 C 代码。

我不确定我在 C 中是否可行,我的想法是我有 4 个房间,每个房间有 11 个对象,每个对象可以有一个名称和描述。

将 bin 粘贴到完整代码 http://pastebin.com/jQJekLk9

【问题讨论】:

    标签: c arrays visual-studio struct lvalue


    【解决方案1】:

    你不能对字符串使用简单的赋值。您需要使用strcpy

    strcpy(rooms[0][0].objects[0].name, "Cabinet");
    

    【讨论】:

    • 更准确地说,你不能对数组使用简单的赋值,包括char的数组。您可以将它与指向char 的指针意义上的字符串一起使用,但您确实需要了解这样做的含义。
    • 非常感谢,我已经花了好几个小时想弄清楚我做错了什么,我不敢相信我忘记了我必须使用 strcpy,即使我确实使用了它我的完整代码中的上述行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 2021-07-12
    • 2014-11-30
    相关资源
    最近更新 更多