因为我无法删除:此代码有效,但我的代码中的循环搞砸了!
将此类结构传递给函数的方法是什么,以便 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}}
答案 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
}