2017-01-25 8 views
-1

Я структура под названием объект определяется как:Доступ к члену структуры в массиве структур, который является членом массива различных структур

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

Я также другая структура называется номер определяется как:

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

Я тогда инициализируем массив номер и попытаться изменить имя объекта в комнате:

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 Community Edition в C++ компилятор для компиляции и запуска кода C.

Я не уверен, что то, что я пытаюсь сделать, возможно в C, идея состоит в том, что у меня есть 4 комнаты, каждая комната имеет 11 объектов, и каждый объект может иметь имя и описание.

Вставить бен полный код http://pastebin.com/jQJekLk9

ответ

2

Вы не можете использовать простые задания со строками. Вам нужно использовать strcpy.

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

Точнее, вы не можете использовать простое назначение с * массивами *, включая массивы 'char'. Вы * можете * использовать его со строками в смысле указателей на 'char', хотя вам нужно понять, что это значит, когда вы это делаете. –

+0

Большое вам спасибо, я пытался выяснить, что я сделал неправильно в течение пары часов, я не могу поверить, что забыл, что мне пришлось использовать strcpy, хотя я использовал его буквально в строке выше в моем полном коде , – SBlower

Смежные вопросы