C:将嵌套结构数组传递给函数

时间:2017-02-18 22:55:54

标签: c arrays struct char structure

因为我无法删除:此代码有效,但我的代码中的循环搞砸了!

将此类结构传递给函数的方法是什么,以便 char数组可以通过引用更改(实际值)?

结构看起来像这样:

void funct(shop_struct *shop);

通常的函数声明并不起作用:

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!

这样,我可以在函数中访问名称 ,但在值之外消失了。我该如何解决这个问题?

示例代码:

{{1}}

1 个答案:

答案 0 :(得分:1)

它应该工作。这是一个有效的例子:

#define CMAX 20
typedef struct product_struct
{
    char name[CMAX];
    int code;
} product_struct;

typedef struct shop_struct
{
    product_struct product[CMAX];
    int productCount;
} shop_struct;


void rename_at(int n, shop_struct* shop, char const* name)
{
    strncpy(shop->product[n].name, name, CMAX);
}

int main()
{
    shop_struct shop = {0};
    strcpy(shop.product[0].name, "product0");
    puts(shop.product[0].name); //prints product0
    rename_at(0,&shop,"new_product0");
    puts(shop.product[0].name); //prints new_product0


}
相关问题