向量分配错误下标指向不完整类型

时间:2016-06-02 07:40:46

标签: c arrays

我有我的产品

typedef struct proditem *prodItem;

我有一个产品符号表

typedef struct tabp *tabP;
struct tabp {
    prodItem vettP;
    int nP;
};

我需要在内存中分配, 然后:

tab->nP = max; // quantity of products
tab->vettP = malloc(max * sizeof(*prodItem));

但是如果尝试使用vector tab-> vettP会出现错误:

tab->vettP[i]<< - 指向不完整类型的下标

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:-1)

我解决了自己,错过了一个指针*

typedef struct tabp *tabP;
struct tabp {
    prodItem *vettP;
    int nP;
};

产品item.h:

#ifndef prodItem_h
#define prodItem_h

#include <stdio.h>
#include <stdlib.h>

typedef struct proditem *prodItem;
typedef char* prodKey ;

prodItem prodItemScan(FILE*);
void prodItemShow(FILE*, prodItem);
int prodItemCheckVoid(prodItem);
void prodItemFree(prodItem);
int prodItemGreater(prodItem,prodItem);

prodKey prodKeyGet(prodItem);
int prodKeyComp(prodKey, prodKey);
#endif /* prodItem_h */

符号table.h

#ifndef tabP_h
#define tabP_h

#include <stdio.h>
#include "proditem.h"

typedef struct tabp *tabP;

tabP tabPScan(FILE*);
void tabPShow(FILE*,tabP);

void tabPFree(tabP);
int tabPCount(tabP);
int tabPSearch(tabP, prodKey);

#endif /* tabP_h */

symbol table.c

#include "tabP.h"

struct tabp {
    prodItem *vettP;
    int nP;
};

tabP tabPScan(FILE *f) {
    int max;
    fscanf(f,"%d", &max);
    tabP tab = malloc((sizeof(*tab)));
    tab->nP = max;
    tab->vettP = malloc(max * sizeof(prodItem));

    for(int i=0; i<max; i++) {
        tab->vettP[i] = prodItemScan(f);

    }

    return tab;
}

void tabPShow(FILE *f, tabP tab){
    for(int i=0; i<tab->nP; i++) {
        prodItemShow(f, tab->vettP[i]);
    }
}

int tabPCount(tabP tab) {
    return tab->nP;
}

int tabPSearch(tabP tab, prodKey key) {
    for (int i=0; i<tab->nP; i++) {
        if (prodKeyComp( prodKeyGet(tab->vettP[i]), key)==1){
            return i;
        }
    }
    return -1;
}