Поскольку я не могу удалить: этот код работает, но я перепутал с циклами в моем коде!C: Передача массива вложенной структуры в функцию
Каким будет способом передать такую структуру, чтобы char array был бы изменен ссылкой (действительное значение)?
Структуры выглядеть следующим образом:
#define CMAX 20
typedef struct product_struct
{
char name[CMAX];
int code;
}product_struct;
typedef struct shop_struct
{
prodcut_struct product[CMAX];
int productCount;
}shop_struct;
Обычная функция DECLARE не делает трюк:
void funct(shop_struct *shop);
Atleast это не работает, когда я пытаюсь скопировать что-то там, как это :
strcpy((shop + i)->product[j].name, someString);
Таким образом, я могу получить доступ к имени в функция, но вне значения исчезает. Как мне это исправить?
Пример кода:
struct_shop shop[10];
void funct(shop_struct *shop)
{
(shop + 0)->product[0].code = 200; //This works!
strcpy((shop + i)->product[j].name, someString); //This works'ish
}
printf("%d", shop[0].product[0].code); //This works!
printf("%s", shop[0].product[0].name); //This does not work!
Предоставьте [mcve]. В коде, который вы опубликовали, нет ничего явно неправильного. – StoryTeller
Это означает, что 'shop', вероятно, * не * ссылается на правильно выделенную' struct'. – dasblinkenlight
@StoryTeller, я написал свою проблему в сообщении. Этот код не работает должным образом. Да, он компилируется, но он не делает то, что должен. – Karl