【发布时间】:2017-02-18 22:55:53
【问题描述】:
因为我无法删除:此代码有效,但我在代码中搞砸了循环!
将这种结构传递给函数的方法是什么,以便 char 数组 将被引用(实际值)更改?
结构如下所示:
#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;
通常的函数声明不能解决问题:
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!
【问题讨论】:
-
请提供minimal reproducible example。您发布的代码没有明显问题。
-
这意味着
shop可能不是指的是正确分配的struct。 -
@StoryTeller,我在帖子中写出了我的问题。此代码未按预期工作。是的,它可以编译,但它没有做它应该做的事情。
-
“我的代码没有按预期工作” 不是一个有用的问题陈述。当您发布的代码中缺少如此多的细节时,它就更没用了。阅读有关 MCVE 的整个页面,然后发布一个。这不仅仅是关于可编译性。您必须在帖子中有足够的内容,以便任何人都可以重现您的问题。
标签: c arrays struct char structure