So, I'm trying to put an item in my dynamic array, but I keep getting this error "expected identifier".
void Lista_Inicia(TLista *lista) {
lista->item = (TItem *) malloc(100 * sizeof(TItem));
lista->tamanho=100;
lista->utilizado=0;
};
void Lista_Insere(TLista *lista, char palavra[]) {
if(lista->tamanho==lista->utilizado){
printf("Erro, não há espaço para inserção\n");
return;
}
TItem* itemAux=malloc(sizeof(TItem));
itemAux->quantidade=malloc(sizeof(int));
itemAux->quantidade=1;
itemAux->palavra=malloc(sizeof(char)*strlen(palavra)+1);
strcpy(itemAux->palavra,palavra);
lista->*item+(lista->utilizado)=itemAux; // <---Expected identifier here
lista->utilizado++;
printf("%d", lista->utilizado);
}
Instead of this code I already tried these ones too:
lista->item+(lista->utilizado)=itemAux;
lista->*item[lista->utilizado]=itemAux;
lista->item[lista->utilizado]=itemAux;
The structs I'm using:
typedef struct Item {
char* palavra;
int quantidade;
} TItem;
typedef struct Lista {
TItem* item;
int tamanho;
int utilizado;
} TLista;
lista->*item
is invalid syntax. It looks like what you want to do is:But the
item
field in yourlista
struct only has a pointer to aTItem
(TItem *
) but you are treating it like an array of pointers toTItems
(TItem **
). Try updating yourLista
struct and theLista_Inicia
method as follows: