私の知る限り、構造内の項目がポインタの場合は で呼び出し->
、通常の値の場合は used で呼び出します.
。
ここに私のtypedef:
typedef struct
{
char name[50];
int quantity;
}ing;
typedef struct
{
char name[50];
ing *n;
int price, n_ing, max_producity;
}prod;
次に、 a を宣言しprod a;
、 を割り当てa->n=malloc(n*sizeof(ing));
ます。しかし、アクセスしようとするとa.n->name
エラーが発生します。
4 つの組み合わせすべてで、「エラー: '->' の型引数が無効です ('prod' (または 'ing') があります)」または「エラー: 添字付きの値は配列でもポインターでもベクトルでもありません」というエラーが表示されます。
なんで?
int ret_max_producity(prod a, ing n, int dim_n)
{
int max_prod=32100, i;
for(i=0; i<a.n_ing; i++)
{
/* here!->*/if((n[find_ing(n, a.n[i]->name, dim_n)].quantity)/(a.n->quantity)<max_prod)
{
/* here!->*/ max_prod=(n[find_ing(n ,a.n[i]->name, dim_n)].quantity/a.n->quantity);
}
}
if(max_prod==32100)
{
printf("ERROR WHILE FINDING MAX PRODUCITY FOR PRODUCT %s, ABORTING", a.name);
system("pause");
exit(EXIT_FAILURE);
}
return max_prod;
}
int find_ing(ing v, char *s, int dim)
{
int i;
for(i=0; i<dim; i++)
{
if(strcmp(s, v.name)==0)
{
return i;
}
}
printf("\n\nERROR WHILE FINDING INGREDIENT %s IN VECTOR, ABORTING...", s);
system("pause");
exit(EXIT_FAILURE);
}