error C2106: ‘=’: el operando izquierdo debe tener el valor l en C

Estoy escribiendo un código en el que tengo que agregar un valor a una tabla de datos abstracta, pero no estoy seguro de por qué no puedo, ya que muestra “error C2106: ‘=’: el operando de la izquierda debe tener el valor l ‘”.

int top_add(top_string *table, const char index[257], const char other[257]) { top_remove(&table, index); if (table->item_count == table->size) { printf("/n Table is full."); return -1; } /* error C2106: '=' : left operand must be l-value */ table->item[table->item_count].index = index; /*error C2106: '=' : left operand must be l-value */ table->item[table->item_count].other = other; table->item_count++; return 1; } 

Hice una búsqueda en línea, pero no pude encontrar una solución demasiado relativa para mí.

Realmente agradecería cualquier pista sobre eso.

ACTUALIZAR:

 typedef struct { char index[257]; char other[257]; } pair; typedef struct { pair *item; int item_count; int size; } top_string; int top_init(top_string *table, const int size) { table->item = malloc((size+1)*sizeof(top_string)); table->size = size; table->item_count = 0; if (table->item == NULL) { return 0; /* failed to allocate memory */ } else { return 1; } } 

Los campos index y other son matrices, no puede asignar matrices. Tendrías que copiarlos con memcpy .

Otra opción sería tener top_add recibir pair lugar de los dos por separado. Entonces podrías asignar la struct .

Además del problema de asignar matrices, debe desreferir la tabla de punteros-> elemento. Y el subíndice [tabla-> item_count] debe estar después de .index

 ((table->item)->index)[table->item_count] 

Eso es un valor de l

No se puede asignar a matrices. Tienes que copiar en ellos con strncpy, memcpy o algo así.