如何解决将新项目添加到 C 中的结构数组
我有一些结构如下:
typedef struct {
char debutAge[15];
char finAge[15];
} Age;
typedef struct {
char type[15];
char composants[50];
Age utilisation;
} Categorie;
typedef struct {
int code;
char nom[30];
float prix;
Categorie med;
int quantitie;
} Medicament;
#define MAX 100
typedef Medicament Pharmacie[MAX];
Pharmacie P;
int nb=0;
在我的主函数中,我试图向 Pharmacie P
数组添加一个新元素,这是我尝试的:
void main()
{
Medicament m = Saisir();
ajouterMedicament(P,nb,m);
afficherMedicaments();
}
int ajouterMedicament(Pharmacie *ph,int *nb,Medicament m) {
int i;
for (i = 0; i < *nb; i++) {
if (m.code == ph[i].code) {
ph[i].prix = m.prix;
ph[i].quantitie = m.quantitie;
}
return 1;
}
if (*nb < MAX) {
ph[*nb] = m;
*nb += 1;
return 1;
}
return 0;
}
但我在这一行遇到错误:mif (m.code == ph[i].code) {
:
expression must have struct or union type
我该如何解决这个问题?
解决方法
您不需要将第一个参数声明为 Pharmacie *
。 Pharmacie
是数组的 typedef,因此您无需添加 *
。
int ajouterMedicament(Pharmacie ph,int *nb,Medicament m) {
并且在调用中,您需要将指针传递给 nb
以便它可以更新:
ajouterMedicament(P,&nb,m);
一般来说,当您将 typedef
用于指针类型时,会让人感到困惑,并且您遇到了这种情况。我建议不要这样做。见Is it a good idea to typedef pointers?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。